Articles of 句柄

C#在桌面图标后面设置窗口

假设我在屏幕上的0,0坐标处有一个100px乘100px的空格式。 它没有边框样式。 有没有什么办法让这个定位在桌面上的图标? 我会认为这将涉及过程Progman,因为那是什么包含桌面图标。 但是,不pipe我尝试什么…获得窗口句柄,改变父母等,我似乎无法得到窗口出现在图标后面。 有任何想法吗?

一旦进程结束,会发生什么?

如果我有一个窗口进程已经停止(死亡或刚刚结束)的句柄: 将句柄(或更好的背后的记忆)重新用于另一个过程? 或者将GetExitCodeProcess()从现在起永远得到正确的结果吗? 如果1.是真的:GetExitCodeProcess()如何工作? 如果2.是真的,那么这不意味着我可以通过启动/终止新进程来降低操作系统,因为我创build了越来越多的句柄(并且操作系统为它们保留了内存)? 我对手柄的概念有点困惑。 先谢谢你!

一些控件怎么没有窗口句柄?

我想得到一些控件的窗口句柄来做一些东西(需要一个句柄)。 这些控件在不同的应用程序中。 奇怪的是; 我发现许多控件没有窗口句柄,就像Windows资源pipe理器中工具栏(?)中的button一样。 只要尝试获取文件夹/search/(等)button的句柄。 它只是给我0。 所以..第一个问题:为什么一些控件没有窗口处理? 他们心中不是所有的控制窗口吗? (只是谈论标准控件,就像我在Windows资源pipe理器中期望的那样,在窗格上没有任何自定义的控件)。 这使我想到了第二个问题:如果无法获得它们的句柄,如何使用它们(如使用EnableWindow)? 非常感谢任何投入! 编辑(其他信息): Windows资源pipe理器只是一个例子。 我经常遇到这个问题 – 在另一个应用程序中(我真正感兴趣的是专有应用程序)。 我有“物理”控制(因为我可以得到这些控件的AutomationElement),但他们没有窗口句柄。 此外,我试图发送一个消息(SendMessage)来获取button状态,试图找出它是否被推或不推(这是一个标准的button,似乎只有通过该消息,performance出这种行为 – 至less我已经看到了,而且button的按下状态可以持续比标准button更长的时间,尽pipeWindows资源pipe理器button显示类似的行为,就像button式checkbox,尽pipe它们是(推)button)。 SendMessage需要一个窗口句柄。 工具栏在某种程度上改变了它的子元素的行为吗? 拿走他们的窗户把手或类似的东西? (使用父处理/控制ID进行标识??)但是,那么如何使用那些需要窗口句柄的控件的function?

如何枚举过程的句柄?

有什么办法如何枚举窗口给定的PID进程,并获得他所有打开的句柄(locking的文件等)的列表? 编辑:我不在乎语言。 如果是在.NET中,我会很高兴,如果在WinApi(C)中,它不会受到伤害。 如果在别的地方,我想我可以重写它:-)

wxPython不会closures与父窗口句柄的框架

我有一个Python程序,从另一个程序通过COM获取窗口句柄(把Python程序看作是一个插件)我把这个窗口设置为主Python框架的父窗口,所以如果另一个程序最小化,python框架也会。 问题是,当我退出,并尝试closures或销毁主框架,frame.close永远不会完成它的执行(虽然它消失),另一个程序拒绝closures,除非杀死与TaskManager。 这里大概是我们采取的步骤: if we are started directly, launch other program if not, we are called from the other program, do nothing enter main function: create new wx.App set other program as frame parent: Get handle via COM create a parent using wx.Window_FromHWND create new frame with handle as parent show frame enter main loop […]

SWT没有更多的句柄

Windows XP对每个进程限制10000个用户句柄,每个桌面会话总共限制32000个。 但是,当我运行4或5 SWT过程,每个消耗不超过2000个用户句柄,SWT没有更多句柄exception将被抛出。 有谁知道为什么?

为什么在redirect输出时调整控制台缓冲区会引发无效句柄exception?

在将输出redirect到文件时,调整C#控制台应用程序中的Console.BufferWidth会引发exception。 我们来看一个例子test1.exe: static void Main(string[] args) { Console.BufferWidth = 240; Console.WriteLine("output1\noutput2"); } 标准输出很好: test1.exe output1 output2 redirect到文件引发exception: test1.exe > file.txt Unhandled Exception: System.IO.IOException: The handle is invalid. at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.__Error.WinIOError() at System.Console.SetBufferSize(Int32 width, Int32 height) at System.Console.set_BufferWidth(Int32 value) at test1.Program.Main(String[] args) in \\wopr\falken\test1\Program.cs:line 13 很容易忽略使用try … catch,但有一些我一般不理解的文件句柄或句柄。 为什么句柄无效?

64位应用程序上的Windows HANDLE的范围是什么?

在WinAPI上, HANDLEtypes被定义为void* ,因此在64位应用程序中, HANDLE值可以从0到18446744073709551615 。 但是,在实践中是这样吗? 任何文件是否规定了这种HANDLE的整体范围? 例如,如果想把这个HANDLE作为int32_t存储在一个完全正常的32位应用程序中,但是在64位应用程序中,这个疑惑将会持续下去。

如何通过windbg处理文件path?

如何从windbg / kd在内核模式下处理文件path?

.NET中的窗口句柄可以改变它的值吗?

在.NET进程的生命周期中,执行System.Windows.Forms.Form的句柄,可以说Application.Run(form)使用的主表单实际上改变了它的值,也就是说,如果使用不同的进程,例如IntPtr handle = User32.FindWindow(null, "Name") ,是否有一种情况下,该处理可能会失效.NET运行时? 编辑 我需要知道句柄,因为我想为IPC使用SendMessage和WM_COPYDATA等。