我想知道是否有一种方法可以让Spy ++获得一个窗口的属性,当它失去焦点时会自动关闭(这是我切换到Spy ++时会发生的事情).谢谢!
ManagedSpy应该是.NET的Spy ++等价物,但不知何故,下载页面现在已不再可用了.
谁知道为什么?
谁知道更换?
--jeroen
前一段时间,我需要一个类似Spy ++的应用程序来进行.NET UI调试.我发现了一篇旧的MSDN文章,其中包含一个类似的示例,但是它停止了在较新的.NET Framework版本中工作.
有没有人知道/编写了一个模仿Spy ++行为的应用程序并且在托管应用程序上工作(相反,显示托管事件/属性)并且可以在新的.NET框架上运行,最高可达4.0?
我正面临一个问题,从一些钩子进程中取出所有控件.我的SpyDll成功地启动了钩子流程,但当我查看声明时
控制控件= Control.FromHandle(MainWindowHandle),它将null返回到控制对象,其中"MainWindowhandle"只是该挂钩进程的本机主窗口句柄,在启动该进程后,您始终从.NET"Process"类中获取该处理.
但严重的是,它发生在其他一些钩子进程中,它是同一个C#.NET应用程序,它返回Main"WinForm"的有效对象.
那么为什么它不适用于上述情况呢?是否有正确使用"MainWindowHandle"的例外情况.在我的例子中,两者都是用C#编程的单独的.NET托管进程.在创建该流程时,是否需要特别维护任何流程配置?
关心乌斯曼
我正在尝试用 C# 编写应用程序来捕捉按下按钮时出现的隐藏窗口的句柄(“显示隐藏的图标”)。
当我们不显示所有通知区域时,我们隐藏了系统托盘图标。
当我们按下显示它们的按钮(“显示隐藏的图标”)时,我们有一个新窗口,其中包含所有图标:

用绿色圆圈标记的隐藏窗口
我怎样才能抓住这个隐藏窗口的句柄?
当我使用 Spy++ 时,我找不到这个窗口,因为当我单击键盘上的任何其他键时,窗口就会消失。
那么我怎样才能抓住隐藏窗口的句柄(我在我的问题的乞求中用绿色标记的那个,第一张图片)。
参考资料(我找到但没有帮助我的链接):
如何使用 Microsoft Spy++ 捕获通知图标属性
获取有关 windows7 中隐藏托盘图标的信息
我想在C#中创建与spy ++相同的"Find windows ..."功能.我试过WINAPI的这个功能:
HWND WINAPI WindowFromPoint(__in POINT Point);
Run Code Online (Sandbox Code Playgroud)
http://msdn.microsoft.com/en-US/library/ms633558.aspx 但是我没有到达所有元素,因为它们被禁用或隐藏.
例如,在程序员模式下使用窗口7计算器,如果它们被禁用,我无法使用我的程序获得"ABCDE F",那么spy ++就可以获得它.
编辑:我试过这个但它不起作用:
[DllImport("user32.dll")]
public static extern ulong GetClassLongPtr(IntPtr hWnd, int nIndex);
[DllImport("user32.dll")]
public static extern IntPtr ChildWindowFromPointEx(IntPtr hWndParent, Win32Point pt, uint uFlags);
IntPtr hWnd = WindowFromPoint(myPoint);
hWnd= ChildWindowFromPointEx(hWnd , myPoint, 0x0000);
Run Code Online (Sandbox Code Playgroud)
myPoint是我鼠标的位置.
我不熟悉WINAPI,我想你的解释是对我不了解.可以有一个ChildWindowFromPointEx函数的小例子,或者知道我的代码不起作用?thanx你的答案
我试图创建循环,但似乎句柄在另一个句柄下,但不是句柄的子句,循环总是发送相同的句柄,并且当关键字"abcde f"被禁用时没有想要的孩子.你有其他想法吗?
java swing应用程序的Spy ++是否有等价物?
我使用第三方应用程序,其中包含通过基于反射的机制调用的大量屏幕。
每当出现问题时,定位问题代码的唯一方法是搜索源(我们可以访问源,但由于合同义务无法修复和部署),以查找出现在相关窗口上的特定字符串序列。例如,如果我在有问题的窗口上看到字符串“XYZ”,我必须搜索该字符串的源以找到存在错误的 java 文件。
是否有工具可以让我在运行时指向 Swing 屏幕并返回生成屏幕的类?
嘿伙计们,我正在尝试向游戏发送消息(自动化文本命令),问题是我无法弄清楚如何使用spy ++中的信息来编写C#sendmessage函数.
我能够使用spy ++来获取
00220540 S WM_SETCURSOR hwnd:0024052C nHittest:HTCLIENT wMouseMsg:WM_MOUSEMOVE
任何人都可以提供这意味着什么的细分,以及如何在c#中将消息发送到游戏中?
编辑:我发现我正在查看错误的过程.我没有看javaw.exe,而是看着实际的游戏.这是按t的代码:
<00919> 0038062A WM_INPUT nInputCode:RIM_INPUT hRawInput:189E0973
<00920> 0024052 P WM_KEYUP nVirtKey:'T' cRepeat:1 ScanCode:14fExtended:0fAltDown:0fRepeat:1fUp:1
Run Code Online (Sandbox Code Playgroud)
谢谢,
马克斯
我正在尝试制作一个程序,点击另一个程序的按钮.我被告知我需要使用spy ++来获取我想要点击的按钮的ID,所以我现在正在使用它.我找到了一个窗口,其中包含我想要获取按钮ID的按钮(窗口中有3个按钮).
在spy ++中哪里可以找到特定的按钮ID?我查看了包含按钮的窗口的"窗口属性",但未找到它.那里有3个按钮所以我猜我会找到3个按钮ID,但我还没有.
我正在尝试获取按钮的属性,但是当我拖动间谍++的查找窗口工具时,它没有到达按钮(在这种情况下为标题"iniciarnravação"),而是按钮网格父级,如下所示:
为什么这样,我如何获得按钮属性?我尝试使用auto it info工具,但我得到了相同的行为.
我尝试从C#代码中获取该按钮属性,如下所示:
public class WindowHandleInfo
{
private delegate bool EnumWindowProc(IntPtr hwnd, IntPtr lParam);
[DllImport("user32")]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool EnumChildWindows(IntPtr window, EnumWindowProc callback, IntPtr lParam);
private IntPtr _MainHandle;
public WindowHandleInfo(IntPtr handle)
{
this._MainHandle = handle;
}
public List<IntPtr> GetAllChildHandles()
{
List<IntPtr> childHandles = new List<IntPtr>();
GCHandle gcChildhandlesList = GCHandle.Alloc(childHandles);
IntPtr pointerChildHandlesList = GCHandle.ToIntPtr(gcChildhandlesList);
try
{
EnumWindowProc childProc = new EnumWindowProc(EnumWindow);
EnumChildWindows(this._MainHandle, childProc, pointerChildHandlesList);
}
finally
{
gcChildhandlesList.Free();
}
return childHandles;
}
private bool EnumWindow(IntPtr hWnd, IntPtr …Run Code Online (Sandbox Code Playgroud)