Tag: winapi

在C#中创建spy ++的函数“find window …”

我想在C#中创建与spy ++相同的function“Find windows …”。 我试过WINAPI的这个function: HWND WINAPI WindowFromPoint(__in POINT Point); http://msdn.microsoft.com/en-US/library/ms633558.aspx但是我没有到达所有元素,因为它们被禁用或隐藏。 例如,在程序员模式下使用窗口7计算器,如果它们被禁用,我无法使用我的程序获得“ABCDEF”,那么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); myPoint是我鼠标的位置。 我不熟悉WINAPI,我想你的解释是对我缺乏了解。 可以有一个ChildWindowFromPointEx函数的小例子,或者知道我的代码不起作用? thanx你的答案 我试图创建循环,但似乎句柄在另一个句柄下,但不是句柄的子句,循环总是发送相同的句柄,并且当禁用键“abcdef”时没有所需的子句。 你有另一个想法吗?

压缩和解压缩文件和文件夹

我需要使用C ++ / C#在Windows Mobile中压缩和解压缩目录hirarchy。 什么是最简单的库? 我用谷歌搜索了很多次。 我发现了一些东西,但我无法继续使用它。 如果您已经实施或者您对此有所了解,请告诉我们。

如何获取具有systray图标的进程

我正在尝试创建应用程序,以获取具有systray图标的进程列表。 我搜索了很多,发现了一些参考文献: http://www.raymond.cc/blog/find-out-what-program-are-running-at-windows-system-tray/ https://superuser.com/questions/708674/how-to-find-out-what-process-a-system-tray-icon-corresponds-to 哪个Windows进程显示给定的任务栏系统托盘图标? https://social.msdn.microsoft.com/Forums/vstudio/en-US/53e27f60-37af-406f-bbdc-45db2bd3dee6/how-to-find-a-system-tray-process https://social.msdn.microsoft.com/Forums/vstudio/en-US/4c4f60ce-3573-433d-994e-9c17f95187f0/finding-which-applications-and-services-are-listed-in-the-system-托盘?论坛= csharpgeneral http://www.codeproject.com/Articles/10497/A-tool-to-order-the-window-buttons-in-your-taskbar 从系统托盘中的图标获取工具提示文本 所有这些都是很好的资源,但对我来说最有用的是3和4。 在1中我们有一个我想要的例子。 我想要有systray图标的进程列表: 应用程序示例称为“AnVir任务管理器” 使用链接6中的代码,我成功遍历系统托盘按钮并查看每个按钮的文本: 但我不知道如何找到与每个trayicon有关的过程。 在代码项目中,他提到可以帮助识别进程的信息是dwData但问题是当我发现Systray中出现的按钮时,其dwData = 0 : 码: Form1.cs的 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace SystrayIcons { public partial class Form1 : Form { public Form1() { Engine.findProcessInSystray(); InitializeComponent(); […]

如何获取Windows 7主题名称

Windows 7附带了几个内置主题。 可以通过右键单击桌面并选择“个性化”来访问它们。 在Personalize下,有一个名称为“航空主题”的部分,其中包含“建筑”,“自然”等主题。 我尝试使用uxtheme.dll的GetCurrentThemeName,但它实际上给出了样式名称:“C:\ Windows \ resources \ Themes \ Aero \ Aero.msstyles”,除非我当前的主题设置为Windows Basic,在这种情况下它返回一个空字符串。 是否有一个实际返回主题名称的API,如“自然”,“建筑”等……? 我尝试的代码如下: [DllImport(“uxtheme”, ExactSpelling = true, CharSet = CharSet.Unicode)] public extern static Int32 GetCurrentThemeName(StringBuilder stringThemeName, int lengthThemeName, StringBuilder stringColorName, int lengthColorName, StringBuilder stringSizeName, int lengthSizeName); StringBuilder stringThemeName = new StringBuilder(260); StringBuilder stringColorName = new StringBuilder(260); StringBuilder stringSizeName = new StringBuilder(260); […]

RegisterHotkey Fn修饰符?

我知道你可以为RegisterHotKey使用CTRL , ALT , SHIFT等修饰符,但是Fn键怎么样? 我以前在我的笔记本电脑上有一些膨胀软件,当按下Fn + Up / Down时会改变亮度。 我删除了所有的英国媒体报道,我想编写一个同样的程序。 任何帮助表示赞赏!

RegisterHotKey无法使用隐形表单(c#)

我试图在系统托盘中放置一个图标,然后给它一个全局键盘快捷键来执行一个function。 我正在使用RegisterHotKey设置全局键盘快捷键,如果与该图标关联的主窗体可见,则它可以正常工作。 但是如果表单是不可见的,那么永远不会调用WndProc方法。 有任何想法吗? 编辑:我的意思是“隐藏”是将以下内容添加到主窗体: protected override void OnLoad(EventArgs e) { hotKey = new GlobalHotkey(GlobalHotkey.WIN, Keys.T, this); bool registered = hotKey.Register(); Visible = false; ShowInTaskbar = false; base.OnLoad(e); } “registered”显示为“true”,如果我忽略“Visible = false”,快捷键工作正常 和“ShowInTaskbar = false;”。

function别名

我想从kernel32.dll导入一些函数,但我想使用不同的名称。 function示例: [DllImport(“kernel32.dll”)] private static extern bool ReadProcessMemoryProc64 (…); private static bool BetterReadableAndWriteableName (…) { ReadProcessMemoryProc64(…); } 如果有另一种方式,包装该function是我实际上不想要的。

检测另一个进程的模式对话框

我想检测另一个进程是否说process.exe当前正在显示一个对话框? 有没有办法在C#中做到这一点? 看看我是否可以获得对话框的句柄。 我尝试过Spy ++的查找窗口工具,当我尝试在对话框顶部拖动取景器时,它不会突出显示对话框,而是填充详细信息并提及AppCustomDialogBox并提及句柄编号 请告知我如何以编程方式检测到.. 谢谢,

无法在文件名末尾复制/移动带空格的文件

真的很疯狂! 我使用Far 2.0创建了一个文件( http://www.farmanager.com/ ,也许你可以使用其他文件管理器); 它的文件名是’C:\ 123.txt’ (是的,文件路径末尾有空格) 。 我正在尝试使用C#程序复制或移动此文件: File.Copy(“C:\\123.txt “, “C:\\456.txt”, true); 但它失败了“无法找到文件’C:\ 123.txt’。” 例外。 但文件存在! 我正在尝试Windows API: [DllImport(“kernel32.dll”)] public static extern int MoveFile(string lpExistingFileName, string lpNewFileName); MoveFile(“C:\\123.txt “, “C:\\456.txt”,); 但它也失败了。 我正在尝试xcopy实用程序: C:\>xcopy “C:\123.txt ” “C:\456.txt” /Y File not found – 123.txt 0 File(s) copied 如何以编程方式重命名文件? 为什么会发生这种情况? 我的操作系统:Windows 7 x64

P / invoke函数将指针指向struct

诸如CreateProcess之类的函数具有指向结构的指针。 在CI中,只传递NULL作为可选参数的指针,而不是在堆栈上创建虚拟结构对象并将指针传递给虚拟对象。 在C#中,我已将其声明为(p / invoke) [DllImport(“kernel32.dll”, CharSet = CharSet.Auto)] public static extern bool CreateProcess( string lpApplicationName, string lpCommandLine, ref SECURITY_ATTRIBUTES lpProcessAttributes, ref SECURITY_ATTRIBUTES lpThreadAttributes, bool bInheritHandles, CreateProcessFlags dwProcessCreationFlags, IntPtr lpEnvironment, string lpCurrentDirectory, ref STARTUPINFO lpStartupInfo, ref PROCESS_INFORMATION lpProcessInformation); 但是,如果我尝试为lpProcessAttributes参数或lpThreadAttributes参数传递null , lpProcessAttributes出现编译器错误: 错误2参数3:无法从“”转换为“ref Debugging.Wrappers.SECURITY_ATTRIBUTES” 如何修改上面的函数签名,以便我可以为SECURITY_ATTRIBUTES参数传递null ,而不会出现此编译器错误? (如果我愿意,还能传递一个真正的结构?)