Articles of 句柄

URLConnection的Java应用程序导致“打开的文件过多”

我写了一小段java程序如下: package com.ny.utils.pub; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; public class NetWriter { private static String link = "http://xxx.yyyyyy.com:4444"; public String getLink() { return link; } public static void setLink(String link) { NetWriter.link = link; } private static HttpURLConnection conn = null; private static BufferedReader bufReader = […]

将HANDLE转换为文件描述符

我有一个这样的句柄: HANDLE hPipe = CreateNamedPipe(…) 有可能将hPipe转换为文件描述符 (int)? 我需要这个,因为我已经用C ++实现了一个使用OpenSSL来处理TLS的代码。 这是像TCP套接字的魅力,但我真的需要用它在Namedpipe上。 OpenSSL的函数SSL_set_fd(SSL * ssl,int fd)只接受一个intforms的 FileDescriptor ,而不是一个HANDLE 。 注:我也尝试使用下面的function,但不起作用(返回3): int fd = _open_osfhandle(reinterpret_cast<intptr_t>(hPipe), 0);

如何find窗口句柄,点击鼠标的应用程序中的控件

我正在编写一个C#应用程序。 我正在寻找一种方法来find其他应用程序中的控件的窗口句柄只要给鼠标点击(或任何坐标)的坐标。 示例:在我的桌面上,我打开了计算器应用程序,打开了记事本,并运行了其他第三方应用程序。 屏幕被他们每个部分覆盖。 现在,如果我运行我的应用程序,如果我点击屏幕上的任何位置,我希望能够find控件的窗口句柄(button,文本框,标签,选项卡,框架等)在鼠标下,无论如果点击计算器中的button,记事本中的文件菜单或第三方应用程序中的其他控件。 这与我们从Spy ++获得的function类似。

如何使用libreadline处理Ctrl-D

我用C语言构build了一个程序,它是一个控制台,我使用libreadline来帮助我构build这个控制台。 一切工作正常,但是当我收到一个ctrl-d ,我得到一个分段错误。 我可以弄清楚如何处理这个,我曾尝试使用signal.h来做到这一点,但不工作。 下面是我的一段代码。 int init_console(char * ip, int port) { /** Variaveis que serão utilizadas */ char * str_command; char * filename = malloc(100); Client * cli = malloc(sizeof (Client)); /** Monta o filename do arquivo de histórico */ strcpy(filename, getenv("HOME")); strcat(filename, HISTORY_FILE); /** Inicializa o histórico de comandos */ using_history(); /** Inicializa […]

另一个进程上的Modal MessageBox句柄可能会locking目标进程

如果我将MessageBox作为另一个进程的窗口的模式显示,只要我的程序保持响应,就可以正常工作。 如果在MessageBox显示接收到MessageBox的窗口将被locking(但仍然响应)的情况下closures或终止,则必须通过任务pipe理器完成。 这里是一个示例代码来演示: using System; using System.Windows.Forms; using System.Diagnostics; using System.Threading; namespace TestMessageBox { class Program { private WindowWrapper notepad; Program(IntPtr handle) { notepad = new WindowWrapper(handle); } static void Main(string[] args) { Process[] procs = Process.GetProcessesByName("notepad"); if (procs.Length > 0) { Console.WriteLine("Notepad detected…"); Program program = new Program(procs[0].MainWindowHandle); Thread thread = new Thread(new ThreadStart(program.ShowMessage)); […]

Windows中的Keyevent

是否有可能获得Windows(XP)中按键的事件? 我有一个线程,它有一段时间(1),并打印一些数据。 它必须是同步的,这就是为什么我使用WaitForMultipleObjects(2,事件,假,无限); 事件是一个句柄数组,它包含2个句柄。 其中一个是来自另一个线程的事件,表明服务器收到了一条新消息,另一个线程告诉我用户按下了一个键(1-7)。 我怎样才能得到这第二个句柄/事件?

如何正确传递窗口句柄?

我不知道手柄后面是什么,也不知道它是否是一个大对象。 一般来说,我在申请中通过了很多,所以如果你能告诉我应该怎样通过,那就太好了。 通过值,const引用甚至指针? 编辑:我应该提到,我谈到位图句柄。 也许这是有所作为的。 好的MSDN有它自己的页面只适用于大写窗口types。

DuplicateHandle错误:error_invalid_handle

我正在尝试使用DuplicateHandle函数将process1的句柄传递给process2。 我使用CreateFile函数获得句柄: HANDLE COMportHandle; COMportHandle = CreateFile(TEXT("COM5"), GENERIC_ALL | PROCESS_DUP_HANDLE, 0, 0, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, 0); 在第二个过程中,我首先通过共享内存从process1中获取进程ID,然后尝试复制该句柄: HANDLE pr1handle, CPH, COMportHandle; pr1handle = OpenProcess(PROCESS_DUP_HANDLE,FALSE,process_id); if(!DuplicateHandle(pr1handle,COMportHandle,GetCurrentProcess(),&CPH,PROCESS_DUP_HANDLE,FALSE,0)) printf("Error: %d\n",GetLastError()); 然后我得到了ERROR_INVALID_HANDLE。 进程是不相关的,我运行第一个打开COM端口,然后希望能够用第二个进程读取它。 有人可以告诉我在哪里捕捉?

处理上次运行的进程win32

如何获得用户上次运行过程的句柄? 我的应用程序将运行,已经开始使用CreateProcess()或ShellExecute(),一个进程,然后用户来执行另一个独立的进程,外部。 忘记用户必须做这个和那个。 我们确信用户将在此时正确运行一个应用程序。 如何处理这个过程? 我不会有它的名字或ID或其他任何东西。 我所知道的是在我的应用程序开始执行之后,或者在使用上面提到的方法之一创build一个进程之后,它正在运行。 任何帮助表示赞赏。

哪些Win32用户模式句柄可以在进程间共享?

我一直在试图更好地理解WinAPI和底层的Windows内核。 从我看到的到目前为止, HWND (窗口)句柄可以在进程间共享。 但是其他句柄呢,它们可以在stream程之间共享吗? HMODULE , HINSTANCE , ATOM ? 以及窗口和绘图组件: HMENU , HDC , HICON , HCURSOR , HBRUSH等? 最后,如果以上所有内容不能共享,是否有任何用户模式的句柄可以? 编辑:澄清。 通过共享 ,我的意思是从一个进程获取句柄的数值,并在另一个进程中使用它。