Tag: winapi

除非我移动光标,否则SendInput不会执行鼠标单击按钮

除非我移动光标,否则SendInput不会执行鼠标单击按钮。 我很感激对这一个的帮助,因为我似乎无法绕过它。 我有一个程序,在前景窗口上执行鼠标单击,我在其中使用SendInput模拟鼠标左键单击。 问题是,如果我将光标移动到点击位置而不是SendInput将进行点击,但是如果我不移动光标而不是没有点击发生,即使通过我传递x和y指向MouseInputData。 我想执行鼠标左键而不需要实际移动光标。 贝娄是我的课程(相当简单和直接前进) namespace StackSolution.Classes { public static class SendInputClass { [DllImport(“user32.dll”, SetLastError = true)] static extern uint SendInput(uint nInputs, ref INPUT pInputs, int cbSize); [DllImport(“user32.dll”)] static extern bool SetCursorPos(int X, int Y); [DllImport(“user32.dll”)] [return: MarshalAs(UnmanagedType.Bool)] static extern bool GetCursorPos(out Point lpPoint); [StructLayout(LayoutKind.Sequential)] struct INPUT { public SendInputEventType type; public MouseKeybdhardwareInputUnion mkhi; […]

监视系统中的进程

有没有办法在系统启动前监控系统启动? 例: 在ZoneAlarm或防病毒程序等程序上,运行程序时会询问您是否允许在运行之前运行该程序…

恢复另一个应用程序的最小化窗口

我正在向一个应用程序添加一些代码,如果它还没有运行,它将启动另一个应用程序,或者如果是,请将它带到前面。 这需要少量的interop / WinAPI代码,我已经从其他网站获得了示例,但似乎无法在Win7中工作。 如果窗口处于某种可见状态,则API的SetForegroundWindow方法就像处理一样(这将是主要情况,根据公司策略,如果外部应用程序正在运行它不应该被最小化)。 但是,如果它被最小化(exception但很重要,因为我的应用程序在这种情况下似乎什么也不做),这个方法和ShowWindow / ShowWindowAsync实际上都不会从任务栏中恢复窗口; 所有方法都只是突出显示任务栏按钮。 这是代码; 大多数工作都很好,但是对ShowWindow()的调用(我也尝试过ShowWindowAsync),无论我发送的命令是什么,都不会做我想要的事情: [DllImport(“user32.dll”)] private static extern int SetForegroundWindow(IntPtr hWnd); private const int SW_SHOWNORMAL = 1; private const int SW_SHOWMAXIMIZED = 3; private const int SW_RESTORE = 9; [DllImport(“user32.dll”)] private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); … //The app is named uniquely enough that it can’t […]

Win32Exception没有足够的存储空间来处理此命令

通过我为MaxTo自动崩溃收集,我收到了以下崩溃报告: V8.12.0.0 – System.ComponentModel.Win32Exception – :Void UpdateLayered():0 Version: MaxTo8.12.0.0 Exception: System.ComponentModel.Win32Exception Error message: Not enough storage is available to process this command Stack trace: at System.Windows.Forms.Form.UpdateLayered() at System.Windows.Forms.Form.OnHandleCreated(EventArgs e) at System.Windows.Forms.Control.WmCreate(Message& m) at System.Windows.Forms.Control.WndProc(Message& m) at System.Windows.Forms.ScrollableControl.WndProc(Message& m) at System.Windows.Forms.ContainerControl.WndProc(Message& m) at System.Windows.Forms.Form.WmCreate(Message& m) at System.Windows.Forms.Form.WndProc(Message& m) at MaxTo.MainForm.WndProc(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& […]

如何使用C#列出可用的video模式?

我找到了很好的使用C ++( http://www.codeproject.com/KB/tips/resswitch.aspx )的例子,但没有在C#中找到。 有人可以帮帮忙吗? 编辑:列出video模式的确切function是: BOOL CVideoModes::GetAvailableVideoModes(CAvailableVideoModes& modes) { modes.SetSize(0, 5); int i=0; DEVMODE dm; while (EnumDisplaySettings(NULL, i, &dm)) { CVideoMode thismode(dm.dmBitsPerPel, dm.dmPelsWidth, dm.dmPelsHeight, dm.dmDisplayFrequency); modes.SetAtGrow(i, thismode); ++i; } modes.FreeExtra(); return (i>0); } 但是因为我无法理解C ++代码。 我在哪里可以找到“thismode”function?

监控进程的网络使用情况?

在C#或C / C ++和Win32中是否有办法监视某个进程的网络使用情况(显然你没有构建该应用程序)? 我想监视一个小时左右的1个进程,然后返回仅由该进程使用的字节,例如limewire。 可能吗? 我知道windows上的netstat -e会告诉你发送/接收的总字节数,但这适用于所有进程。 编辑:如果我不能只返回一个进程用法,我如何获得整个系统发送/接收的字节? 作为netstat显示,除了我只想要整数。 例如: netstat -e已接收已发送字节数2111568926 1133174989单播数据包3016480 2711006非单播数据包3122 1100丢弃0 0错误0 0未知协议0 我只想获得2个变量,如rec = 2111568926和sent = 1133174989

通过挂钩直接向另一个进程发送击键

我想知道,在摆弄了SendInput,SendKeys,PostMessage,SendMessage,SendNotifyMessage,keybd_event等等各种问题之后。 为了找到这个…尝试将键盘输入发送到另一个非前台进程是非常挑剔和不可靠的。 我尝试了一种SendInput的方法,我在其中欺骗Z顺序(保持当前窗口在顶部)并快速前进第三方窗口,发送输入,并重新前景我的窗口。 其中最终失败了,而且,不知何故,不确定为什么,设法同时也在我的窗口上触发击键而不是前景(导致在两个窗口之间发送和接收的无限循环,直到我设法关闭该过程)。 我尝试过SendMessage和PostMessage的不同组合。 一个用于向下,一个用于向上,因为同时使用向下和向上导致问题,例如PostMessage用于两者,导致密钥在接收窗口上复制。 或两者的SendMessage,这导致文本输入问题,但其他function正常。 用于keydown的SendMessage和用于keyUp的PostMessage适用于所有function,但可靠性率急剧下降,并且在关键事件中增加了延迟。 只有用于keydown的PostMessage和用于keyup的SendMessage的组合设法做了一些有用的事情,可能有5-10%的密钥注册失败率。 对于SentNotifyMessage也是如此(就可靠性而言,其行为与SendMessage基本相同)。 基本上,我已经结束了,我想知道直接在目标窗口中注入一个钩子,并做一些伏都教以这种方式向它发送击键,绕过消息队列等。这样做将会不会触发全局键事件,只会影响目标窗口。 唯一的问题是,当涉及到注射/挂钩等时,我是不可知的。所以我转向你,社区。 哇呢?

如何调出内置的文件复制对话框?

我将使用我的winforms应用程序通过网络复制一个大文件,我需要显示某种进度条。 我没有自己制作自己的复制程序,而是认为简单地显示内置文件复制对话框可能会更好。 我还需要一个“复制完成”和“复制失败”通知。 我需要这个在Windows XP,Vista和7上工作。有没有办法打电话来从我的c#代码中使用这个function?

获取应用程序的窗口句柄

我正在构建一个应用程序给另一个应用程序mainWindowhandle它收集有关窗口状态的信息。 我收集有关子窗口的信息没有问题,但我无法访问应用程序的其他打开窗口甚至菜单。 有没有办法获取应用程序的所有窗口句柄?

如何更改其他程序窗口的大小?

我如何从我的C#程序中更改另一个程序 – 让我们说Skype的 – 窗口大小?