Tag: winapi

如何更改win32窗口上的文本?

寻找从C#更改win32窗口上的文本的提示,技巧和搜索术语。 更具体地说,我正在尝试将打印对话框上的文本从“打印”更改为“确定”,因为我使用对话框创建打印票而不进行任何打印。 如何找到对话框的窗口句柄? 一旦我得到它,我将如何在窗体的子窗口中找到按钮? 一旦我找到了,我将如何更改按钮上的文字? 如何在显示对话框之前完成所有这些操作? 这里有一个类似的问题,但是它指的是一篇比所需更复杂的CodeProject文章,并且花了我更长的时间来解析,而不是花在这上面。 TIA。

是否有可能将虚拟打印机与物理打印机区分开来?

我有WinXP中所有可用打印机的列表。 我需要代码(理想情况下是.NET)来过滤掉此列表中的所有虚拟打印机。 有可能吗? 我分析了Win32_Printer wmi类的所有属性,但看不到任何合适的属性。 请帮忙。

有没有办法以编程方式判断系统是否启用了触控function?

我试图弄清楚如何以编程方式判断Windows 7机器是否启用了触控function。 是否有任何触摸API(托管或非托管)可以帮助我实现这一目标? 或者我可以检查注册表中的某些内容?

使用P / Invoke时如何将Win32类型映射到C#类型?

我想在C#中做这样的事情。 我发现如何使用此链接中的 P / Invoke 从 C#调用Win32方法。 但是我在实现P / Invoke方面遇到了一些困难。 例如,我想访问的方法之一是PdhOpenQuery ,签名: PDH_STATUS PdhOpenQuery( __in LPCTSTR szDataSource, __in DWORD_PTR dwUserData, __out PDH_HQUERY *phQuery ); 我认为相应的C#声明应该是这样的 [DllImport(“Pdh.dll”)] static extern PDH_STATUS PdhOpenQuery(LPCTSTR szDataSource, DWORD_PTR dwUserData, out PDH_HQUERY *phQuery); 我的问题: 什么是LPCTSTR,以及它在C#中映射的数据类型是什么? 如何映射指针类型DWORD_PTR? pinvoke文章说DWORD映射到UInt32,但指针怎么样? 我认为PDH_STATUS和PDH_HQUERY是库的特定结构(我还不确定)。 我该如何映射这些? 什么是正确的方法声明,以及如何正确地调用它?

UI自动化“选定文本”

任何人都知道如何使用UI Automation和.Net从其他应用程序中获取所选文本? http://msdn.microsoft.com/en-us/library/ms745158.aspx

从Explorer窗口获取文件夹路径

我有一个指向打开的资源管理器窗口的指针,我想知道它的完整路径。 例如: int hWnd = FindWindow(null, “Directory”); 但现在,如何获取目录完整路径,如”C:\Users\mm\Documents\Directory”

在WndProc中处理AeroSnap消息

在我的C#.NET 4应用程序中,我使用WndProc处理一些消息,主要是处理从全屏调整应用程序的大小。 现在我只是处理SC_MAXIMIZE和WM_NCLBUTTONDBLCLK以确定窗口是否正在resize或从最大化状态resize(我知道我不需要WndProc来处理SC_MAXIMIZE ,但是当我使用时, Form_Resize似乎没有触发WM_NCLBUTTONDBLCLK消息双击应用程序的标题栏。 现在我注意到,如果我将Aero Snap窗口移到屏幕顶部以使其最大化,则上述消息都不会发布,因此当通过Aero Snap最大化窗口时,不会应用某些逻辑。 我只想处理消息,如果窗口被捕捉到屏幕的顶部而不是右边或左边,或者窗口是从最大化位置取消的。 我找不到任何与Aero Snap相关的窗口消息。 有谁知道这些消息的任何参考?

通过它的句柄获得一个窗口的界限

我试图获得当前活动窗口的高度和宽度。 [DllImport(“user32.dll”, CharSet = CharSet.Auto, ExactSpelling = true)] public static extern IntPtr GetForegroundWindow(); [DllImport(“user32.dll”)] private static extern bool GetWindowRect(IntPtr hWnd, Rectangle rect); Rectangle bonds = new Rectangle(); GetWindowRect(handle, bonds); Bitmap bmp = new Bitmap(bonds.Width, bonds.Height); 此代码不起作用,因为我需要使用RECT ,我不知道如何。

通过SendMessage或其他东西异步GetForegroundWindow?

有没有办法通知焦点何时从任何窗口更改到另一个窗口(甚至在Windows应用程序之间),以便我可以在用户更改焦点时立即调用我的委托? 我一直在想我可能只需要进行民意调查:( :(每1秒钟调用一次GetForegroundWindow但我真的不想那样做)。

在没有窃取焦点的情况下启动流程(C#)

我需要能够在没有窃取焦点的情况下启动进程(控制台和窗口)。 我发现在.NET框架中执行此操作的唯一方法是使用Microsoft.VisualBasic.AppWinStyle的Microsoft.VisualBasic.Interaction.Shell。[Minimized | Normal] NoFocus(映射到SW_SHOWMINNOACTIVE / SW_SHOWMA传递给ShellExecute)。 在我的代码的当前版本(它确实窃取焦点),我使用System.Diagnostics.Process,并依赖于我提供的一些function,Interaction.Shell方法没有。 2个问题(一个严肃,一个让我感到沮丧,我真的不希望得到一个好的答案) 1.)我是否正确,我别无选择,只能自己包装CreateProcess或ShellExecuteEx,或者我错过了其他一些解决方案? 我真的希望避免这种情况,因为除了这种疏忽之外,Process是一个完整而有用的包装器,并且会有很多function要实现,P / Invoke调试调用以及各种各样的痛苦。 2.)为什么Microsoft的一个团队会创建这样一个(否则)完整的包装器,然后从ProcessWindowStyle中排除一半可能的值,而另一个团队创建了一个类似的包装器,它不太完整,但提供了所有有用的窗口样式?