首页
社区
课程
招聘
[求助]用RC编译资源文件的问题(昨天装了VC)
发表于: 2005-8-22 17:03 10277

[求助]用RC编译资源文件的问题(昨天装了VC)

2005-8-22 17:03
10277
l:\mp\asm>rc processlist.rc
processlist.rc(5):warning RC4005:'DLG_MAIN':redefinition
processlist.rc(6):warning RC4005:'DLG_PROCESS':redefinition
processlist.rc(7):warning RC4005:'DLG_REFRESH':redefinition
processlist.rc(12):error RC2104:undefined keyword or key name: DS_MODALFRAME
不知道什么意思 以前没遇到过
#include                <resource.h>
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#define        ICO_MAIN                1000
#define        DLG_MAIN                1000
#define IDC_PROCESS                1001
#define IDC_REFRESH                1002
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ICO_MAIN        ICON                "34.ico"
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
DLG_MAIN DIALOG 76, 95, 190, 108
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "进程列表"
FONT 9, "宋体"
{
LISTBOX IDC_PROCESS, 8, 5, 173, 86, LBS_STANDARD | LBS_SORT
PUSHBUTTON "刷新(&R)", IDC_REFRESH, 87, 90, 45, 14
DEFPUSHBUTTON "终止(&T)", IDOK, 137, 90, 45, 14, BS_DEFPUSHBUTTON | WS_DISABLED | WS_TABSTOP
}

.386
                .model flat, stdcall
                option casemap :none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include 文件定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include                windows.inc
include                user32.inc
includelib        user32.lib
include                kernel32.inc
includelib        kernel32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Equ 等值定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ICO_MAIN        equ        1000
DLG_MAIN        equ        1000
IDC_PROCESS        equ         1001
IDC_REFRESH        equ         1002
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                .data?
hInstance        dd        ?
hWinList        dd        ?

                .const
szErrTerminate        db        '无法结束指定进程!',0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

                .code
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_GetProcessList        proc        _hWnd
                local        @stProcess:PROCESSENTRY32
                local        @hSnapShot

                invoke        RtlZeroMemory,addr @stProcess,sizeof @stProcess
                invoke        SendMessage,hWinList,LB_RESETCONTENT,0,0
                mov        @stProcess.dwSize,sizeof @stProcess
                invoke        CreateToolhelp32Snapshot,TH32CS_SNAPPROCESS,0
                mov        @hSnapShot,eax
                invoke        Process32First,@hSnapShot,addr @stProcess
                .while        eax
                        invoke        SendMessage,hWinList,LB_ADDSTRING,0,addr @stProcess.szExeFile
                        invoke        SendMessage,hWinList,LB_SETITEMDATA,eax,@stProcess.th32ProcessID
                        invoke        Process32Next,@hSnapShot,addr @stProcess
                .endw
                invoke        CloseHandle,@hSnapShot
                invoke        GetDlgItem,_hWnd,IDOK
                invoke        EnableWindow,eax,FALSE
                ret

_GetProcessList        endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_ProcDlgMain        proc        uses ebx edi esi hWnd,wMsg,wParam,lParam

                mov        eax,wMsg
                .if        eax == WM_CLOSE
                        invoke        EndDialog,hWnd,NULL
                .elseif        eax == WM_INITDIALOG
                        invoke        GetDlgItem,hWnd,IDC_PROCESS
                        mov        hWinList,eax
                        invoke        _GetProcessList,hWnd
;********************************************************************
                .elseif        eax == WM_COMMAND
                        mov        eax,wParam
                        .if        ax ==        IDOK
                                invoke        SendMessage,hWinList,LB_GETCURSEL,0,0
                                invoke        SendMessage,hWinList,LB_GETITEMDATA,eax,0
                                invoke        OpenProcess,PROCESS_TERMINATE,FALSE,eax
                                .if        eax
                                        mov        ebx,eax
                                        invoke        TerminateProcess,ebx,-1
                                        invoke        CloseHandle,ebx
                                        invoke        Sleep,200
                                        invoke        _GetProcessList,hWnd
                                        jmp        @F
                                .endif
                                invoke        MessageBox,hWnd,addr szErrTerminate,NULL,MB_OK or MB_ICONWARNING
                                @@:
;********************************************************************
                        .elseif        ax ==        IDC_REFRESH
                                invoke        _GetProcessList,hWnd
;********************************************************************
                        .elseif        ax ==        IDC_PROCESS
                                shr        eax,16
                                .if        ax ==        LBN_SELCHANGE
                                        invoke        GetDlgItem,hWnd,IDOK
                                        invoke        EnableWindow,eax,TRUE
                                .endif
                        .endif
;********************************************************************
                .else
                        mov        eax,FALSE
                        ret
                .endif
                mov        eax,TRUE
                ret

_ProcDlgMain        endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
start:
                invoke        GetModuleHandle,NULL
                mov        hInstance,eax
                invoke        DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _ProcDlgMain,NULL
                invoke        ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                end        start

还有用VC建立的资源文件可以编译但链接后的EXE打不开不知道怎么回事
各位朋友指教 谢谢

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
2
l:\mp\asm>rc processlist.rc
processlist.rc(5):warning RC4005:'DLG_MAIN':redefinition
processlist.rc(6):warning RC4005:'DLG_PROCESS':redefinition
processlist.rc(7):warning RC4005:'DLG_REFRESH':redefinition
processlist.rc(12):error RC2104:undefined keyword or key name: DS_MODALFRAME
不知道什么意思 以前没遇到过
#include <resource.h>
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

#define  ICO_MAIN    1000
//ICO_MAIN和DLG_MAIN的值相同
#define  DLG_MAIN    1000
#define IDC_PROCESS    1001
#define IDC_REFRESH    1002

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ICO_MAIN  ICON    "34.ico"
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
DLG_MAIN DIALOG 76, 95, 190, 108
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "进程列表"
FONT 9, "宋体"
{
LISTBOX IDC_PROCESS, 8, 5, 173, 86, LBS_STANDARD | LBS_SORT
PUSHBUTTON "刷新(&R)", IDC_REFRESH, 87, 90, 45, 14
DEFPUSHBUTTON "终止(&T)", IDOK, 137, 90, 45, 14, BS_DEFPUSHBUTTON | WS_DISABLED | WS_TABSTOP
}

.386
    .model flat, stdcall
    option casemap :none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include 文件定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include    windows.inc
include    user32.inc
includelib  user32.lib
include    kernel32.inc
includelib  kernel32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Equ 等值定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

ICO_MAIN  equ  1000  
//ICO_MAIN和DLG_MAIN的值相同
DLG_MAIN  equ  1000
IDC_PROCESS  equ   1001
IDC_REFRESH  equ   1002

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    .data?
hInstance  dd  ?
hWinList  dd  ?

    .const
szErrTerminate  db  '无法结束指定进程!',0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

    .code
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_GetProcessList  proc  _hWnd
    local  @stProcess:PROCESSENTRY32
    local  @hSnapShot

    invoke  RtlZeroMemory,addr @stProcess,sizeof @stProcess
    invoke  SendMessage,hWinList,LB_RESETCONTENT,0,0
    mov  @stProcess.dwSize,sizeof @stProcess
    invoke  CreateToolhelp32Snapshot,TH32CS_SNAPPROCESS,0
    mov  @hSnapShot,eax
    invoke  Process32First,@hSnapShot,addr @stProcess
    .while  eax
      invoke  SendMessage,hWinList,LB_ADDSTRING,0,addr @stProcess.szExeFile
      invoke  SendMessage,hWinList,LB_SETITEMDATA,eax,@stProcess.th32ProcessID
      invoke  Process32Next,@hSnapShot,addr @stProcess
    .endw
    invoke  CloseHandle,@hSnapShot
    invoke  GetDlgItem,_hWnd,IDOK
    invoke  EnableWindow,eax,FALSE
    ret

_GetProcessList  endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_ProcDlgMain  proc  uses ebx edi esi hWnd,wMsg,wParam,lParam

    mov  eax,wMsg
    .if  eax == WM_CLOSE
      invoke  EndDialog,hWnd,NULL
    .elseif  eax == WM_INITDIALOG
      invoke  GetDlgItem,hWnd,IDC_PROCESS
      mov  hWinList,eax
      invoke  _GetProcessList,hWnd
;********************************************************************
    .elseif  eax == WM_COMMAND
      mov  eax,wParam
      .if  ax ==  IDOK
        invoke  SendMessage,hWinList,LB_GETCURSEL,0,0
        invoke  SendMessage,hWinList,LB_GETITEMDATA,eax,0
        invoke  OpenProcess,PROCESS_TERMINATE,FALSE,eax
        .if  eax
          mov  ebx,eax
          invoke  TerminateProcess,ebx,-1
          invoke  CloseHandle,ebx
          invoke  Sleep,200
          invoke  _GetProcessList,hWnd
          jmp  @F
        .endif
        invoke  MessageBox,hWnd,addr szErrTerminate,NULL,MB_OK or MB_ICONWARNING
        @@:
;********************************************************************
      .elseif  ax ==  IDC_REFRESH
        invoke  _GetProcessList,hWnd
;********************************************************************
      .elseif  ax ==  IDC_PROCESS
        shr  eax,16
        .if  ax ==  LBN_SELCHANGE
          invoke  GetDlgItem,hWnd,IDOK
          invoke  EnableWindow,eax,TRUE
        .endif
      .endif
;********************************************************************
    .else
      mov  eax,FALSE
      ret
    .endif
    mov  eax,TRUE
    ret

_ProcDlgMain  endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
start:
    invoke  GetModuleHandle,NULL
    mov  hInstance,eax
    invoke  DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _ProcDlgMain,NULL
    invoke  ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    end  start
2005-8-22 18:23
0
雪    币: 236
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
3
processlist.rc(12):error RC2104:undefined keyword or key name: DS_MODALFRAME
这一句说的是你的DS_MODALFRAME没有定义过.
2005-8-22 19:46
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢各位  我在头文件加了  windows.h 就解决了第2个问题 第1个还没有解决
就是出现  前边
processlist.rc(5):warning RC4005:'DLG_MAIN':redefinition
processlist.rc(6):warning RC4005:'DLG_PROCESS':redefinition
processlist.rc(7):warning RC4005:'DLG_REFRESH':redefinition
重新定义   不知道怎么解决
2005-8-25 13:56
0
游客
登录 | 注册 方可回帖
返回
//