1.启动 var wnd:HWND; begin wnd:=ShellExecute(self.handle, 'Open', 'D:\游戏\AgeIICON\empire2.exe', nil, nil, SW_SHOWNORMAL); if wnd<32 then showmessage'error ,failure to run'); 2。关闭 SendMessage(wnd,WM_Close);//把1中的wnd定义为全局变量
我按照yang6130(月明@沧海) 的方法做,关闭不了。打开的结果是长时间的黑屏后出现“已完成”的DOS窗口,其错误提示如下: Shutting down Allegro Exiting due to signal SIGFPE Division by Zero at eip=00013077 eax=00000000 ebx=000e30c0 pcx=00000000 dex=00000000 esi=000e2e7c edi=000a2fd8 ebp=000e2d58 esp=000e2d48 program=C:\mydocu~1\GAME\SNOOD\SNOOD.EXE cs: sel=00af base=83c2c000 limit=fff47fff ds: sel=00b7 base=83c2c000 limit=fff47fff es: sel=00b7 base=83c2c000 limit=fff47fff fs: sel=00c7 base=00000000 limit=ffffffff gs: sel=00c7 base=00000000 limit=ffffffff ss: sel=00b7 base=83c2c000 limit=fff47fffCall frame traceback EIPs: 0×00013077 0×000048ad 0×00004532 0×00010e29 0×0005f416
麻烦哪位高手回答我吧。 其实我所说的“泡泡龙”是名为"snood.exe"的游戏。
2.procedure TForm1.Button1Click(Sender: TObject); var hCurrentWindow: HWnd; szText: array[0..254] of char; begin hCurrentWindow := GetWindow(GetDesktopWindow, GW_Child); while hCurrentWindow <> 0 do begin if GetWindowText(hCurrentWindow, @szText[0], 255)>0 then Memo1.Lines.Add(StrPas(@szText)); if pos('MS-DOS',szText)>0 then//MS-DOS程序 SendMessage(hCurrentWindow,WM_close,0,0);//关闭 hCurrentWindow:=GetWindow(hCurrentWindow, GW_HWNDNEXT); end; end;
var
wnd:HWND;
begin
wnd:=ShellExecute(self.handle, 'Open', 'D:\游戏\AgeIICON\empire2.exe',
nil, nil, SW_SHOWNORMAL);
if wnd<32 then
showmessage'error ,failure to run');
2。关闭
SendMessage(wnd,WM_Close);//把1中的wnd定义为全局变量
我的方法是
先找到dos窗口句柄(command窗口)
然后发送wm_close
一般它会弹出是否强制关闭的提示
发送消息wm_enter
关闭就发消息,用sendmessage
Shutting down Allegro
Exiting due to signal SIGFPE
Division by Zero at eip=00013077
eax=00000000 ebx=000e30c0 pcx=00000000 dex=00000000 esi=000e2e7c edi=000a2fd8
ebp=000e2d58 esp=000e2d48 program=C:\mydocu~1\GAME\SNOOD\SNOOD.EXE
cs: sel=00af base=83c2c000 limit=fff47fff
ds: sel=00b7 base=83c2c000 limit=fff47fff
es: sel=00b7 base=83c2c000 limit=fff47fff
fs: sel=00c7 base=00000000 limit=ffffffff
gs: sel=00c7 base=00000000 limit=ffffffff
ss: sel=00b7 base=83c2c000 limit=fff47fffCall frame traceback EIPs:
0×00013077
0×000048ad
0×00004532
0×00010e29
0×0005f416
其实我所说的“泡泡龙”是名为"snood.exe"的游戏。
var
hCurrentWindow: HWnd;
szText: array[0..254] of char;
begin
hCurrentWindow := GetWindow(GetDesktopWindow, GW_Child);
while hCurrentWindow <> 0 do
begin
if GetWindowText(hCurrentWindow, @szText[0], 255)>0 then
Memo1.Lines.Add(StrPas(@szText));
if pos('MS-DOS',szText)>0 then//MS-DOS程序
SendMessage(hCurrentWindow,WM_close,0,0);//关闭
hCurrentWindow:=GetWindow(hCurrentWindow, GW_HWNDNEXT);
end;
end;