-3

你好,欢迎每一位

我正在使用带有更新 3 的 Visual c++ 2012 Ultimate,我有一个项目应该在 xp Pack 3 环境中执行,我按照此博客 Windows XP Targeting with Visual Studio 2012中的说明更改工具集

在我的 windows xp 机器上,我安装了 svcedit.exe visual 2012 update 3,但问题是代码无法运行,并且根本没有显示任何错误。

我真的不知道问题是什么!

示例 - 源文件

主文件

#include <WindowsX.h>
#include <Windows.h>
#include <tchar.h>
#include <stdio.h>

#include "resource1.h"

#define my_PROCESS_MESSAGE(hWnd, message, fn)   \
    case(message):  \
        return( \
            SetDlgMsgResult(hWnd, uMsg, \
                HANDLE_##message((hWnd), (wParam), (lParam), (fn)) ))   \

LRESULT CALLBACK DlgProc(HWND, UINT, WPARAM, LPARAM);
BOOL Cls_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam);
void Cls_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify);

int WINAPI _tWinMain(   HINSTANCE   hInstance,
                HINSTANCE,
                LPTSTR,
                int         iCmdShow    )
{
    DialogBoxParam( hInstance,
            MAKEINTRESOURCE(IDD_DLLINJECTOR),
            NULL,
            (DLGPROC) DlgProc,
            NULL
            );

    return 0;
}

LRESULT CALLBACK DlgProc(   HWND    hWnd,
                            UINT    uMsg,
                            WPARAM  wParam,
                            LPARAM  lParam  )
{
    switch (uMsg)
    {
        my_PROCESS_MESSAGE(hWnd, WM_INITDIALOG, Cls_OnInitDialog);
        my_PROCESS_MESSAGE(hWnd, WM_COMMAND, Cls_OnCommand);

    default:
        break;
    }

    return FALSE;
}

BOOL Cls_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
    SetDlgItemText( hwnd,
            IDC_DEBUG,
            _T("Zirek: Some text\r\n")
            );

    return TRUE;
}

void Cls_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
    switch (id)
    {
    case IDCANCEL:
        EndDialog(hwnd, id);
        break;

    default:
        break;
    }

    return;
}

资源1.h

//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by Resource.rc
//
#define IDCANCEL2                       3
#define IDCANCEL3                       4
#define IDD_DIALOG1                     101
#define IDD_DLLINJECTOR                 101
#define IDC_TREE1                       1001
#define IDC_EDIT1                       1002
#define IDC_DEBUG                       1003
#define IDC_LIST1                       1004
#define IDC_EDIT4                       1005
#define IDC_EDIT3                       1007

// Next default values for new objects
// 
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE        102
#define _APS_NEXT_COMMAND_VALUE         40001
#define _APS_NEXT_CONTROL_VALUE         1006
#define _APS_NEXT_SYMED_VALUE           101
#endif
#endif

资源.rc

// Microsoft Visual C++ generated resource script.
//
#include "resource1.h"

#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"

/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
// English (United States) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US

#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//

1 TEXTINCLUDE 
BEGIN
    "resource1.h\0"
END

2 TEXTINCLUDE 
BEGIN
    "#include ""afxres.h""\r\n"
    "\0"
END

3 TEXTINCLUDE 
BEGIN
    "\r\n"
    "\0"
END

#endif    // APSTUDIO_INVOKED


/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//

IDD_DLLINJECTOR DIALOGEX 0, 0, 559, 255
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "DLL Injector"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
    PUSHBUTTON      "&Close",IDCANCEL,494,54,50,14
    CONTROL         "",IDC_TREE1,"SysTreeView32",WS_BORDER | WS_HSCROLL | WS_TABSTOP,7,7,125,221,WS_EX_CLIENTEDGE
    EDITTEXT        IDC_EDIT1,7,234,125,14,ES_AUTOHSCROLL,WS_EX_DLGMODALFRAME | WS_EX_CLIENTEDGE
    EDITTEXT        IDC_DEBUG,138,149,414,99,ES_MULTILINE | ES_AUTOHSCROLL,WS_EX_CLIENTEDGE
    CONTROL         "",IDC_LIST1,"SysListView32",LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,138,7,125,137,WS_EX_CLIENTEDGE
    CTEXT           "Zirek\r\nAT4RE\r\nDLL Injector",IDC_STATIC,486,23,66,26,0,WS_EX_CLIENTEDGE
    EDITTEXT        IDC_EDIT3,269,130,226,14,ES_AUTOHSCROLL,WS_EX_DLGMODALFRAME
    PUSHBUTTON      "&Inject",IDCANCEL2,494,74,50,29
    EDITTEXT        IDC_EDIT4,269,7,211,117,ES_AUTOHSCROLL,WS_EX_CLIENTEDGE
    DEFPUSHBUTTON   "&Open",IDCANCEL3,502,130,50,14
END


/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//

#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO
BEGIN
    IDD_DLLINJECTOR, DIALOG
    BEGIN
        LEFTMARGIN, 7
        RIGHTMARGIN, 552
        TOPMARGIN, 7
        BOTTOMMARGIN, 248
    END
END
#endif    // APSTUDIO_INVOKED

#endif    // English (United States) resources
/////////////////////////////////////////////////////////////////////////////



#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//


/////////////////////////////////////////////////////////////////////////////
#endif    // not APSTUDIO_INVOKED

代码在 Windows 8 和 Windows 7 上正确运行,但在 Windows XP 中,当我单击应用程序时,什么也没有发生。

最好的,齐雷克

4

2 回答 2

1

您需要在要运行应用程序的任何机器上安装VC++ 2012 Redistributables 。确保下载并安装与您的 Visual Studio 版本匹配的可再发行组件,包括更新(例如,如果您有 VS2012 更新 2,则分发该版本,而不是 VS2013 更新 3 的可再发行组件)。

于 2013-10-18T20:20:20.170 回答
0

我也不知道问题是什么,但总的来说使用dependencywalker是一个好的开始。它会告诉您您的应用程序是否依赖于 winxp 中不可用的功能,或者您是否忘记部署一些运行时 dll。

于 2013-10-18T17:57:29.137 回答