Tag: winapi

WriteProcessMemory的

好的…我想让win32api WriteProcessMemory工作。 ( 仅用于在.Net平台上学习winAPI!^ ___ ^ ) 我正在使用Nemerle,但语法与C#类似,我可以读取C#代码。 所以这是我的步骤 : 1)获得win apifunction [DllImport(“kernel32.dll”,SetLastError = true)] public static extern WriteProcessMemory (hProcess : IntPtr, lpBaseAddress : int, lpBuffer : array[byte], nSize : int, lpNumberOfBytesWritten : out int) : bool; 2)打开进程,获取调试权限^ _ ^和…调用函数 def WriteToMem(ProcessHandle : IntPtr, BaseAddress : int, NewVal : array[byte]) : bool { mutable BytesWritten […]

停止进程从C#显示一个窗口

我正在尝试自动化在启动时创建GUI窗口但没有用户交互的应用程序,但我无法弄清楚如何隐藏实际窗口。 我尝试过使用ProcessStartInfo: Process.Start(new ProcessStartInfo { UseShellExecute = false, CreateNoWindow = true, WindowStyle = ProcessWindowStyle.Hidden, // other properties here }); 但窗口仍然显示出来。 我也试过旋转等待窗口存在,然后隐藏它: while (process.MainWindowHandle == IntPtr.Zero) {} ShowWindowAsync(process.MainWindowHandle, SW_HIDE); 遗憾的是,这使得窗口闪烁大约1/16秒左右,如果可能的话,我想避免使用它。 我目前的想法是创建一个钩子 ,但我不确定抓什么钩子,也不确定它是否会起作用。 有小费吗?

使用窗口句柄获取当前活动窗口的路径

我想知道如何使用C#获取当前活动窗口的路径。 我得到currnet活动窗口的句柄 const int nChars = 256; int handle = 0; StringBuilder Buff = new StringBuilder(nChars); handle = GetForegroundWindow(); 现在我怎么得到这个窗口的路径? ie:“我的文档”窗口的路径是 C:\Users\User\Documents – == – == – ==编辑- == – == – = – 我想用程序监控“Windows资源管理器”并查看用户去哪里? (即:用户转到c:\然后转到程序文件,然后转到Internet Explorer,我想获得此路径:C:\ Program Files \ Internet Explorer。

检测在c#中使用openas_rundll打开的所选程序

我在c#的openas_rundll的帮助下使用openfile对话框打开一个文件。 Process.Start(“rundll32.exe”, string.Format(“shell32.dll,OpenAs_RunDLL \”{0}\””, tempFilePath)); 现在我想检测用于打开文件的程序。 我想跟踪这个过程。 我的目标是在用户关闭程序时删除该文件。

使用.Net检测外部应用程序中的拖放操作

我需要检测外部应用程序中的拖放操作,是否可能? 我想写一个钩子来检测这些操作。 任何人都可以指出我正确的方向,我可以尝试挂钩哪些消息或api函数来检测拖放事件? 我想在C#中这样做。 提前致谢。

窗口句柄中的.net类名

我正在开发一个监视Windows机器上正在运行的应用程序的应用程序。 如果在自动化过程中弹出某些对话框,它将用于引发警报。 我正在使用Windows API来获取现有窗口的类名,这很好。 但是,如果这些是.NET应用程序,那么而不是.NET类名,我会得到类似’WindowsForms10.Window.8.app.0.39cfeeb’的内容,更糟糕的是,类名在执行之间并不是一成不变的。 有没有办法在只提供Windows句柄时获取.NET类名?

通过其进程名称取消隐藏进程?

前一段时间我写了一个隐藏/恢复进程窗口的代码,我做的是这样的: 隐藏进程: 1)在正在运行的进程中查找进程名称。 2)将MainWindowHandle添加到Container(在本例中为Dictionary),稍后取消隐藏该过程是必要的。 3)使用ShowWindow API函数隐藏进程。 取消隐藏流程: 1)在正在运行的进程中查找进程名称。 2)从容器中检索指定进程的已保存MainWindowHandle。 3)使用ShowWindow API函数取消隐藏进程。 为什么我使用字典来取消隐藏进程?嗯,因为隐藏进程的MainWindowHandle值为0 ,所以这是我找到的唯一方法来检索在ShowWindow函数中使用的正确句柄来恢复进程。 但我真的不想依赖于Hide进程之前保存所需HWND的Hide方法,我想通过指定进程名称知道如何在VB.NET或C#中执行取消隐藏操作来改进这一切。 (例如: cmd.exe )在MainWindowHandle之前没有保存,这可能吗? 我展示了代码(在VB.NET中),让您了解我为HideProcess方法做了些什么: 但请注意,此代码与问题并不完全相关,我的问题是如何仅通过指定进程名称取消隐藏进程名称以避免下面编写的代码需要检索已保存的句柄以取消隐藏进程。 ‘ Hide-Unhide Process ‘ ‘ Usage Examples : ‘ ‘ HideProcess(Process.GetCurrentProcess().MainModule.ModuleName) ‘ HideProcess(“notepad.exe”, Recursivity:=False) ‘ HideProcess(“notepad”, Recursivity:=True) ‘ ‘ UnhideProcess(Process.GetCurrentProcess().MainModule.ModuleName) ‘ UnhideProcess(“notepad.exe”, Recursivity:=False) ‘ UnhideProcess(“notepad”, Recursivity:=True) Private ProcessHandles As New Dictionary(Of String, IntPtr) Private Shared Function […]

是否有跨平台(x86和x64)PInvoke和Windows数据类型的权威指南?

我正在validationx64兼容性的一些代码。 以前我使用过PInvoke.net,但是我发现了x64方面的一些可疑声明。 所以现在,我: 查找API参考,例如MapViewOfFile 查找Windows数据类型定义 找到相应的.NET类型。 这是第3步,我想要一个明确的参考 举个例子: LPVOID WINAPI MapViewOfFile( __in HANDLE hFileMappingObject, __in DWORD dwDesiredAccess, __in DWORD dwFileOffsetHigh, __in DWORD dwFileOffsetLow, __in SIZE_T dwNumberOfBytesToMap ); 返回值为LPVOID,定义为: LPVOID 指向任何类型的指针。 此类型在WinDef.h中声明如下: typedef void *LPVOID; 好的…所以我猜那是IntPtr或UIntPtr 。 本文有一个表,建议LPVOID应映射到IntPtr或UIntPtr。 好。 接下来,HANDLE。 处理 对象的句柄。 此类型在WinNT.h中声明如下: typedef PVOID HANDLE; 好的,HANDLE是一个PVOID。 PVOID 指向任何类型的指针。 此类型在WinNT.h中声明如下: typedef void * PVOID; 嗯,听起来像IntPtr 接下来,DWORD […]

将外部应用程序移动到屏幕的前面

我正在运行的应用程序需要调用单独的应用程序来进行扫描。 我正在通过启动一个新的System.Diagnostics.Process调用另一个应用程序。 一旦我完成了这个过程,我就会调用一个方法来为该应用程序提供重点。 我已经尝试了两种不同的方式来将外部应用程序作为重点,但两者都没有起作用。 有人可以帮忙吗? 这是代码: using System.Runtime.InteropServices; [DllImport(“user32.dll”)] private static extern bool ShowWindow(IntPtr hWnd, uint windowStyle); [DllImport(“user32.dll”)] private static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int x, int y, int cx, int cy, uint uFlags); [DllImport(“user32.dll”)] private static extern bool SetForegroundWindow(IntPtr hWnd); private static void GiveSpecifiedAppTheFocus(int processID) { try { Process p = Process.GetProcessById(processID); […]

使用API​​隐藏程序标题栏

可以使用c#和windows api删除一个窗口控制台标题栏,如果是的话怎么办? 请。