Tag: winapi

如何隐藏控制台窗口?

问题:我有一个不应该看到的控制台程序。 (它重置IIS并删除临时文件。) 现在我可以设法在开始后立即隐藏窗口,如下所示: static void Main(string[] args) { var currentProcess = System.Diagnostics.Process.GetCurrentProcess(); Console.WriteLine(currentProcess.MainWindowTitle); IntPtr hWnd = currentProcess.MainWindowHandle;//FindWindow(null, “Your console windows caption”); //put your console window caption here if (hWnd != IntPtr.Zero) { //Hide the window ShowWindow(hWnd, 0); // 0 = SW_HIDE } 问题是这显示了一秒钟的窗口。 是否有控制台程序的构造函数,我可以在显示之前隐藏窗口? 第二个: 我用 [System.Runtime.InteropServices.DllImport(“user32.dll”)] static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); 而且我不喜欢它里面的32。 […]

覆盖标题栏按钮的工具提示文本(关闭,最大化,最小化,帮助)

我一直在努力改变为表单主标题栏上的按钮显示的工具提示的文本。 简而言之,我们利用Windows窗体的“帮助”按钮来实现其他目的。 这工作正常。 问题是,当鼠标hover在该按钮上时,会出现“帮助”工具提示,这对应用程序没有任何意义。 理想情况下,有一些方法可以为我的应用程序更改该工具提示的文本; 但是,在这一点上,我只是想找到一种完全禁用工具提示的方法。 我知道你可以通过在regedit中修改’UserPreferencesMask’键来禁用整个操作系统的工具提示,但我真的想要一种方法让它只影响我的应用程序。 同样,理想情况下,托管代码可能会有一些方法,但我不反对链接到Windows API等。 感谢您解决此问题的任何建议!

如何在WinForm应用程序中获取最顶层表单的句柄?

我有一个WinForm应用程序,其他子窗体(不是mdi)。 如果用户按下“Esc”,即使没有焦点,也应关闭最上面的表格。 我可以使用键盘钩子来全局捕捉Escape,但我还需要关闭表单的句柄。 我想有一种方法可以使用Win32 API,但有一个使用托管代码的解决方案?

如何在c#中使用低级键盘钩子来抑制任务切换键(winkey,alt-tab,alt-esc,ctrl-esc)

谁能告诉我如何使用c#禁用任务切换键

C#窗口应用程序从其他应用程序的光标位置获取单词

我有C#窗口应用程序,我想获取光标当前所在的文本或从其他应用程序中选择文本,如记事本,记事本++或任何浏览器等。

创建一个屏幕键盘

我使用PostMessage来模拟后台程序中的击键。 除了需要在物理键盘上移位的字符外,它工作正常。 我如何模拟class次? “ 我使用的代码大致是: VK vk = VkKeyScanEx (c, GetKeyboardLayout (0)); AttachThreadInput (_attachedThredId, _attachedProcessId, true); PostMessage (_window, WM_KEYDOWN, vk.key, 0x1); PostMessage (_window, WM_KEYUP, vk.key, 0xC0010001); AttachThreadInput (_attachedThredId, _attachedProcessId, false); 我该如何处理VK的扩展部分? 编辑 我正在尝试创建一个屏幕键盘。 屏幕键盘上的每个按钮都模拟一系列击键。 接收器是一个旧程序,根据执行的键盘顺序执行不同的任务。 键盘序列如下 {ESC} {NN ESC} NN {} ESC NN ½NN §NN 其中{ESC}模拟按下Esc键,NN是hex值,§/½让程序听。 通常我们有特殊的物理键盘来控制程序,但它们很昂贵。 因此,在我们并不总是拥有物理键盘的测试环境中,我们必须手动输入这些代码

如何调用Windows API

可能重复: Windows API和.net语言 我想从.NET Framework调用本机Windows API。 我希望有一个简单的方法,我可以像其他.NET API一样从高级层调用本机API。 请参阅您知道的任何资源。 任何帮助将不胜感激。

如何在Process.StandardOutput中禁用输出缓冲

这个问题不止一次被问过,但我没有在任何讨论中找到满意的答案。 我正在启动一个命令行过程,它可以对STDOUT进行实时测量,大约每秒产生一个新结果。 使用System.Diagnostics.Process.StandardOutput导致完全不可接受的延迟(超过20秒),因为STDOUT数据通过Process.StandardOutput StreamReader中的4k缓冲区工作,并且似乎没有任何方法可以解决这个问题。 调用Process.StandardOutput.BaseStream.Flush()不起作用。 我试过对Process.StandardOutput进行逐字节同步读取,但是我仍然比实际输出落后4k。 任何人至少可以validation我有可能以某种方式克服我重定向STDOUT时遇到的所有缓冲问题,并且一旦它出现在shell窗口中就会在我的应用程序中接收数据吗? 我可以inheritanceProcess类并更改StandardOutput流读取器的行为吗? 我是否需要查看原始WINAPI调用? 不知何故,这必须要完成,即使我最终编写非托管C ++来启动任务并使用输出,并将其连接起来。任何帮助都非常感谢; 我的智慧结束了…… 编辑:看来我需要的是可用于C / C ++,Perl,Python和Java的“期望”库的.Net实现(这是迄今为止我发现的唯一库)。 有谁知道这样的野兽是否存在?

API函数AllocConsole和AttachConsole(-1)之间有什么不同?

能否请您解释一下,API函数AllocConsole和AttachConsole(-1)之间有什么不同? 我的意思是如果AttachConsole获得ATTACH_PARENT_PROCESS(DWORD)-1 。

在浏览器中获取已打开选项卡的URL

我正在开发一个项目,我需要在浏览器中获取所有已打开标签的url(例如Google Chrome,IE,Firefox等) 有没有办法用c#或vb.net做到这一点? ps它是一个Windows窗体应用程序