标签: spy++

Spy++:WM_ACTIVATEAPP 给出了一个不存在的线程 ID,为什么?

我正在尝试开发一个可以将另一个应用程序带到前台的应用程序,因此我使用 Spy++ 分析了 Windows 资源管理器(Alt-Tab)的行为,对我来说有趣的是哪个应用程序或哪个 threis 实际激活,所以我监视消息 WM_ACTIVATEAPP .

WM_ACTIVATEAPP,当wparam=false时,根据MSDN文档,lparam表示被激活线程的threadid。

这是我的 Spy++ 日志中的一个示例:<00037> 00030DD6 S WM_ACTIVATEAPP fActive:False dwThreadID:000008F0

我的问题是:给定的 dwThreadID 8F0应该是被激活的应用程序。但是:当我切换到 Spy++ 中的线程视图并搜索线程8F0 时,我什么也没找到。该线程似乎根本不存在。那么如何将此线程 ID 转换为进程 ID?

c# winapi spy++

3
推荐指数
1
解决办法
771
查看次数

在 Spy++ 中,控件的名称是什么值?

我正在使用 System.Windows.Automation 从组框中的标签中获取一些 UI 控件文本值。我正在尝试使用 spy++ 来获取我正在寻找的控件名称。

在此处输入图片说明

AutomationElement Root = AutomationElement.RootElement;
AutomationElement MainForm = Root.FindFirst(TreeScope.Descendants,new PropertyCondition(AutomationElement.AutomationIdProperty,"control name im looking for"));
Run Code Online (Sandbox Code Playgroud)

什么值代表我要搜索的内容?例如,我会将其更改为... ...AutomationIdProperty,"Window 00031BB0"));

我不确定 spy++ 提供的所有信息实际上代表什么。

感谢您的任何帮助!

c# ui-automation spy++ .net-4.5

1
推荐指数
1
解决办法
1845
查看次数

我不能使用FindWindowEx()来查找控件

我想打开Microsoft Security Essential程序,然后单击VC立即扫描按钮.我可以找到窗口,但找不到控制权.这是我的代码,当我运行此代码时显示控件未找到.我尝试在运行程序中单击"浏览"按钮测试此代码,但是当我尝试使用Microsoft Security Essential时,它找不到控件.我不知道为什么这个控件可能在Tab中.如何使用FindWindowEx()单击Microsoft Security Essential中的立即扫描按钮?

int run_ms(){   

    ShellExecute(NULL, L"open", L"C:/Program Files/Microsoft Security Client/msseces.exe", NULL, NULL, SW_SHOWNORMAL);

        HWND w;
    w=FindWindow(NULL, L"Microsoft Security Essentials");

        if(w==NULL)
                MessageBox(NULL,L"Not found",L"",MB_OK);

        else{
                HWND cb;
                cb = FindWindowEx(w,NULL,NULL,_T("&Scan now"));     

            if(cb!=NULL)
            {
                SendMessage(cb,WM_LBUTTONDOWN, NULL,NULL);
                SendMessage(cb,WM_LBUTTONUP, NULL,NULL);
            }
            else
                MessageBox(NULL,L"Control not found",L"",MB_OK);
        }

            return 0;
}
Run Code Online (Sandbox Code Playgroud)

我在Microsoft Security Essential中使用带有按钮的Spy ++,它显示如下

Caption : &Scan now
Class : ALT:BUTTON
I use FindWindowEx() like this cb = FindWindowEx(w,NULL,NULL,_T("&Scan now")); 
Run Code Online (Sandbox Code Playgroud)

但它没有找到控制.

c c++ mfc spy++ visual-c++

1
推荐指数
1
解决办法
2213
查看次数

Delphi通过EnumWindows,Enumchildwindows或Spy ++检查TGroupBox内的外部TLabel

我正在Delphi XE2中开发一个应用程序,它通过EnumWindows和EnumChildWindows函数检查一个运行应用程序的窗口,该窗口也是用Delphi编写的.

这是主要代码(改编自一个例子:http://www.swissdelphicenter.ch/torry/showcode.php?id = 410)

function EnumChildWindowsProc(Wnd: HWnd; Form: TForm1): Bool; export;
  {$ifdef Win32} stdcall; {$endif}
var
  Buffer: array[0..99] of Char;
begin
  GetWindowText(Wnd, Buffer, 100);

  if StrPas(Buffer) = '' then Buffer := 'Empty';
  new(AWindows);
  with AWindows^ do
  begin
    WindowHandle := Wnd;
    WindowText   := StrPas(Buffer);
  end;

  CNode := Form1.TreeView1.Items.AddChildObject(PNode,
               AWindows^.WindowText + ':' +
               IntToHex(AWindows^.WindowHandle, 8), AWindows);

  if GetWindow(Wnd, GW_CHILD) = 0 then
  begin
    PNode := CNode;
    Enumchildwindows(Wnd, @EnumChildWindowsProc, 0);
  end;
  Result := True;
end;

function EnumWindowsProc(Wnd: HWnd; …
Run Code Online (Sandbox Code Playgroud)

delphi tlabel spy++ delphi-xe2 tcombobox

0
推荐指数
1
解决办法
778
查看次数

为什么 Spy++ 看不到发送到 UWP 应用的消息?

虽然我们都在这个话题上纠缠不清,但事实证明,虽然 UWP 应用程序确实有顶级窗口,您可以向它们发送(明智的)消息 (*),并且这些消息确实通过并产生了预期的效果,Spy++似乎永远不会看到这些消息,或者确实看到 Windows 本身可能发送的任何其他消息。

任何人都可以对此有所了解吗?

只是为了提供一些背景信息,Spy 可以毫无问题地定位和检查这些窗口(“查找工具”工作正常),但消息记录完全静音。我已经测试了设置应用程序、屏幕键盘、日历和计算器,并且在 Spy 中勾选了所有适当的“附加窗口”复选框。我还使用 Process Explorer 来检查 Spy 是否以“高完整性级别”运行(因为它大概是提升的),并且确实如此。

(*) 是的,我知道我们不应该这样做,但是,你知道。

windows hwnd spy++ uwp

-1
推荐指数
1
解决办法
868
查看次数

标签 统计

spy++ ×5

c# ×2

.net-4.5 ×1

c ×1

c++ ×1

delphi ×1

delphi-xe2 ×1

hwnd ×1

mfc ×1

tcombobox ×1

tlabel ×1

ui-automation ×1

uwp ×1

visual-c++ ×1

winapi ×1

windows ×1