我正在製作一個小程序,以便在使用Microsoft遠程協助(msra.exe)時使我的生活更輕鬆。使用C++,我可以打開msra.exe,然後找到窗口句柄。然後我想要找到子窗口(按鈕),並與它們進行交互。問題似乎是,雖然我找不到我想要的按鈕。 Spy ++顯示按鈕具有以下文本:使用FindWindowEx函數找不到子窗口
窗口004902F4「邀請您信任的人來幫助您」按鈕。
我的程序在搜索此字符串時返回該按鈕不存在。有人有主意嗎?下面的代碼:
#include "stdafx.h"
#include <windows.h>
#include <string>
#include <sys/types.h>
#include <stdlib.h>
#include <Windows.h>
#include <process.h>
using std::string;
void openRA(void * dummy);
int _tmain(int argc, _TCHAR* argv[])
{
_beginthread(openRA, 0, NULL);
Sleep(1000);
HWND handle = NULL;
handle = FindWindow(NULL, TEXT("Windows Remote Assistance"));
if(handle == NULL){
printf("handle was null\n");
}
else{
printf("handle was not null\n");
}
HWND button1 = NULL;
Sleep(1000);
button1 = FindWindowEx(handle, 0, 0, TEXT("Invite someone you trust to help you"));
if(button1 == NULL){
printf("Button1 was null");
}
else{
printf("I found he button!");
}
fflush(stdout);
return 0;
}
void openRA(void * dummy){
printf("I'm inside this function\n");
system("msra.exe &");
}
編輯:
這裏是間諜++顯示的圖像。
我已經與多個窗口,這個確切的問題。事實證明,使用你看到的數字手柄是行得通的,但當然這不是一個非常長期的解決方案。什麼讓Spy ++找到他們,但不是我們,我想知道。 – chris
'FindWindowEx()'不遞歸掃描所有後代控件。你確定這個按鈕是主框架的直接子嗎? –
@FrédéricHamidi,我絕對相信我嘗試過的一些是直接的孩子。 – chris