我想实现枚举武林的窗口,并可以一一隐藏窗口怎么实现?
我想实现枚举武林的窗口,并可以一一隐藏窗口怎么实现?delphi 我也想学 可就是没跟踪出来 跟踪游戏的MOUSEMOVE事件应该可以的,鼠标移动的时候 游戏不停地判断窗口 GameHwnd:=findwindow(nil,'Element Client');GameHwnd:=GetNextWindow(GameHwnd,GW_HWNDNEXT);//找下个窗口 我自己写了一段代码,为什么只对一个窗口有效,当双开以上就不好使呢?窗口标题不样的时候好使
var
Form1: TForm1;
Nhwnd:HWND;
implementation
{$R *.dfm}
function EnumWinProc(Wnd : HWND; form1 : TForm1) : Boolean; Export; {$IFDEF Win32}StdCall;{$ENDIF}
var
WinText : Array of Char;
begin
GetWindowText(Wnd, WinText, 255);
Result := True;
if (StrPas(WinText) = 'Element Client') then
Form1.CheckListBox1.Items.Add(StrPas(WinText));
end;
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
EnumWindows(@EnumWinProc, LongInt(Self));
end;
procedure TForm1.CheckListBox1ClickCheck(Sender: TObject);
begin
if checklistbox1.Checked=true then
begin
Nhwnd:=findwindow(NIL,pchar(Checklistbox1.Items)); //转到选中窗口
ShowWindow(Nhwnd,Sw_Hide);
end else
begin
Nhwnd:=findwindow(NIL,pchar(Checklistbox1.Items)); //转到选中窗口
ShowWindow(Nhwnd,sw_SHOW);
end;
end;
end. 可以枚举所有窗口的形式来枚举所有进程的PID值 然后和你想要的PID值对比
如果PID值一样则保存窗口的句柄
流程是这样
EnumWindows //所有窗口
EnumWindowsProc//回调
GetWindowThreadProcessId //得到进程ID
然后做比较。得到的PID 和你的 PID比较 如果是一样则保存窗口句柄就可以了 4楼的问题应该出在
Nhwnd:=findwindow(NIL,pchar(Checklistbox1.Items))
这句
因为用这个函数是靠标题找窗口句并的,而Checklistbox1显示的标题全是一样的 'Element Client',等于没用EnumWinProc
建议这样改
Form1.CheckListBox1.Items.Add(StrPas(WinText));
改成Form1.CheckListBox1.Items.Add('$'+IntToHex(wnd,8));
Nhwnd:=findwindow(NIL,pchar(Checklistbox1.Items))
改成Nhwnd:=StrToInt(Checklistbox1.Items);
页:
[1]