草庐IT

basic_handle

全部标签

c++ - 使用 C++11 std::thread native_handle 以及我是否需要 CloseHandle

我开始练习使用C++11std::thread。通常,对于Win32,只要我有线程句柄,我就需要调用CloseHandle。当我使用C++11native_handle时,是否仍需要调用CloseHandle?另外,如果我不使用C++11native句柄,线程句柄是否得到正确清理? 最佳答案 当然不是。线程对象有一个析构函数,它释放对象可能获取的任何操作系统特定资源。实际上,每个(好的)C++对象都有一个析构函数,可以清除需要清理的所有内容,并且这个析构函数(当代码编写正确时)由程序自动调用。这个习语被称为RAII-每个对象都有一个

windows - 在visual basic中模拟windowskey+L?

我想在VisualBasic中模拟Windows键+L(锁定控制台的快捷方式)并将其绑定(bind)到一个函数。所以当这个函数被调用时它会锁定控制台。我可以这样做吗? 最佳答案 模拟热键是错误的做法。您需要做的就是调用LockWorkStationfunction.这与按Ctrl+Alt+Del并选择“锁定工作站”或使用Win的结果相同>+L热键,除了您可以通过代码以编程方式完成。要从VB应用程序调用此函数,您需要编写一个声明,如下所示:PrivateDeclareFunctionLockWorkStationLib"user32.

windows - Delphi XE2 将 Application.MainForm.Handle 分配给 DLL 中的 Application.Handle

我对从DLL内部创建的表单有一个小问题。基本上,当显示来自dll的表单(Form1)(我认为它必须保持在顶部)并且您打开另一个与主应用程序分开的表单(Form2)(即不在内部)时,会发生什么dll)。如果将光标放在Form2上的控件上以显示提示,则Form2将立即移到Form1后面。只有当MainFormOnTaskBar为true时才会发生这种情况。目前我们正在将主应用程序的Application.Handle传递给DLL,并将其分配给DLL的Application.Handle。我已设法通过将Application.MainForm.Handle传递给DLL以分配给DLL中的App

PHP proc_open 不起作用 - 给我 "Missing handle qualifier in array"

Warning:proc_open():MissinghandlequalifierinarrayinC:\...\updatedots.phponline102我正在尝试打开记事本并在2秒后将其关闭。这是我的代码:$descriptorspec=array(0=>array("pipe"=>"r"),1=>array("pipe"=>"w"),2=>array("file"=>"logs/errors.txt"));//Createchildandstartprocess$child=array("process"=>null,"pipes"=>array());$child["pr

c++ - 为什么 CRITICAL_SECTION 的 OwningThread 成员是 HANDLE 类型,当它表示线程 ID 时?

我正在尝试为CRITICAL_SECTION解锁代码添加一些调试检查,我尝试了以下操作:...if(m_pCritSect){ASSERT(m_pCritSect->OwningThread==GetCurrentThreadId());LeaveCriticalSection(m_pCritSect);}}通过调试CRITICAL_SECTIONS(使用VS2005,主要在WindowsXP上)我“知道”OwningThread的值(RTL_CRITICAL_SECTION结构的成员winnt中定义.h)是持有锁的线程的第ID的值。然而,线程ID由DWORD(unsignedlong

windows - MEMORY_BASIC_INFORMATION 结构中的 BaseAddress 和 AllocationBase 有什么区别?

在MSDN中我找到以下内容`BaseAddress-指向页面区域基地址的指针。AllocationBase-指向由VirtualAlloc函数分配的页面范围的基地址的指针。BaseAddress成员指向的页面就包含在这个分配范围内。但我不明白到底有什么区别。谁能告诉我区别?(不像在MSDN中那样:)) 最佳答案 Windows上的虚拟内存分配粒度为64KB,即SYSTEM_INFO.dwAllocationGranularity的值。但是虚拟内存页是4096字节,SYSTEM_INFO.dwPageSize的值。当您使用Virtua

windows - 如何创建虚拟游戏 handle ?

我将如何创建一个“游戏handle”,它在DirectInput应用程序中显示为普通游戏Controller,但其控件的状态实际上由软件定义? 最佳答案 编写一个设备驱动程序来伪装成一个。具体来说,Windows设备驱动程序通过中断请求协议(protocol)处理所谓的中断请求-这归结为驱动程序内部的包装结构和一组缓冲区。现在您需要知道的下一件事是,许多驱动程序实际上是分层的,或堆叠的,或者您想要使用的任何名称。因此,例如要编写磁盘驱动程序,您可能会与其上方的驱动程序(作为磁盘类)进行交互,但使用其下方的驱动程序(例如scsi端口)

windows - Windows 中的 socket 和 HANDLE 有什么区别?

我正在尝试制作一个在Windows中运行的Linux服务器。套接字和文件描述符在Linux中被视为相同。一些系统api可用于套接字和文件描述符。但是,我通过WINAPI处理Winsock和HANDLE(文件描述符)。所以我需要知道一个整数是一个套接字还是一个句柄。Nowhereisthequestion:Wouldthereturnvaluefromsocket()andopen()bethesameinWindows?如果它们总是不同,我可以编写自己的socket()和open()来包装系统的。并记录系统api的返回值,判断整数是socket还是HANDLE。如果它们相同,我不知道如

c++ - 我如何使用 SendInput 在 x、y 坐标上模拟鼠标双击窗口(我知道 handle )?

我如何使用SendInput在x、y坐标上模拟鼠标双击窗口(我知道该窗口的句柄)? 最佳答案 voidDoubleClick(intx,inty){constdoubleXSCALEFACTOR=65535/(GetSystemMetrics(SM_CXSCREEN)-1);constdoubleYSCALEFACTOR=65535/(GetSystemMetrics(SM_CYSCREEN)-1);POINTcursorPos;GetCursorPos(&cursorPos);doublecx=cursorPos.x*XSCALE

windows - Git Fetch 在 windows 中返回 'fatal: I don' t handle protocol https'

在添加远程仓库后,我尝试了gitfetchremoteRepoName但它返回了这个错误:致命:我不处理协议(protocol)“https”我探索了相关问题,但其中大部分属于gitclone,因此他们的答案不适用于我的情况。这是一个屏幕截图: 最佳答案 我可以在forkgeek和https://...之间看到额外的空格3.运行这些命令来修复它。gitremoteremoveforkgeekgitremoteaddupstreamhttps://github.com/forkgeeks/aws-cloudwatch-keen-int