Articles of Windows

如何使用SleepEx的可靠警报和整体最低睡眠时间?

我有以下用例:我当前的线程需要执行operation1 ,等待一些时间与其他人协调,然后需要做operation2 。 在等待之间,由于文件系统事件,APC可能需要由该线程处理,在当前线程完成operation2之后,APC将稍后向另一个队列添加另一个operation1 。 简单的如下: while (true) { processOperation1; SleepEx(…, true); processOperation2; } 重要的是,在operation1和operation2之间,必须至less经过指定的SleepEx时间! 这不需要是一个整体,线程可以立即用于处理APC并排队另一个operation1 ,除非指定的时间已过,否则它不应该继续operation2 。 从文档 : 如果参数为TRUE,并且调用此函数的线程与调用扩展I / O函数(ReadFileEx或WriteFileEx)的线程相同,则函数在超时时间已过或I / O完成callbackfunction发生。 如果发生I / O完成callback,则调用I / O完成function。 如果一个APC排队到该线程(QueueUserAPC),则该函数在定时器溢出时间已过或调用APC函数时返回。 根据我的理解,这意味着如果SleepEx被调用并且APC已经排队,那么直接由当前线程执行,因为它有这个能力。 但是之后SleepEx之后的代码会发生什么? 线程是否返回到进程operation2是因为SleepEx返回了控制权还是线程回到睡眠状态,在SleepEx停留,直到经过指定的时间量? 文档中的第一句话并不是说从函数返回,而是“恢复线程”: 挂起当前线程直到满足指定的条件。 发生以下情况之一时,执行继续: 这可能意味着线程恢复,处理APC,然后停留在SleepEx ,hibernate所需的任何时间量。 如果情况并非如此,那么SleepEx是否真的离开了,这是否说明已经过了多长时间? SleepEx似乎没有提供该值,但只有一些不变的返回值。 这听起来像我需要在我自己的SleepEx之前和之后需要时间,并一次又一次地调用该函数,直到我真正需要的时间已经过去? 有没有像这样的东西,也许是作为boost一部分? 谢谢!

操作简单的Windows计算器使用C#中的win32 API?

那么,我已经尽我所能去查看代码示例,并在网上发布如何做到这一点,但是我几个月来还没有能够使用Windows API与其他程序进行交互运行。 我不是最伟大的程序员,有些东西超出了我的想象。 我已经能够做的最多的是find计算器进程和它的句柄,并用SetWindowText来改变标题。 我真的很想学习如何做的是让我的程序使用windows user32(我认为这必须是正确的库),通过实际按下软件计算器上的数字键button来input一些数字,以进行简单的计算。 我真的没有这个程序的用途,这只是一个目标,我试图达到学习如何使用Windows API特别是在C#中的初学者水平。 如果没有人有这样的代码,或者即使你这样做,我也非常感谢在networking上的书籍或资源的一些build议,我应该阅读,以了解如何做到这一点。

在Unix下创build的文件的Windows下使用fstream :: seekg

我有一个C ++跨平台的程序(用Linux下的g ++和PC下的Visual Studio编译)。 该程序将行写入文本文件(使用<< operator和std::endl ),但也可以从生成的文本文件(使用std::getline )读回数据。 为了优化数据访问和节省内存,在读取数据文件时,我第一次读取数据并在程序中保存数据位置。 当需要数据时,我稍后使用seekg移动到特定位置并读取数据。 在PC上创build和读取文件工作正常。 在Linux上创build和读取文件工作正常。 但是在Linux上创build文件并在PC上阅读失败。 在PC下,seekg有时无法相应地移动光标。 我可以在下面的例子中找出问题。 它读取文件一次,保存第二个位置和值,然后移回保存的位置并再次读取该行。 #include <fstream> #include <iostream> #include <string> #include <assert.h> int main() { std::fstream file; file.open( "buglines.txt", std::ios_base::in ); if ( file.is_open() ) { std::streampos posLine2; std::string lineStr; std::string line2Str; int line = 1; while ( std::getline( file, lineStr ) ) […]

从NT服务发送消息到远程桌面会话

我怎样才能发送从远程桌面会话中启动的应用程序的nt服务sendmessage&postmessage? 目前我通过应用程序之间的udp通信暂时解决了这个问题。

修改InstallShield X的EXE清单(版本10.5)

我InstallScript Project InstallShield X (版本10.5)创build的InstallScript Project 当我使用以下清单从Windows SDK v7.1A运行mt.exe : MySetup.exe.manifest <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> <security> <requestedPrivileges> <requestedExecutionLevel level='requireAdministrator' uiAccess='false' /> </requestedPrivileges> </security> </trustInfo> </assembly> 使用以下命令: # wrong file! MySetup.exe will be truncated! mt.exe -manifest MySetup.exe.manifest -updateresource:MySetup.exe;#1 安装程序( MySetup.exe )从MySetup.exe MB MySetup.exe KB。 如何正确地将Admin Privilege Elevation清单embedded到由InstallShield X生成的安装程序中?

为什么MemoryStream.GetBuffer()总是抛出?

以下代码将始终引发UnuthorizedAccessException(MemoryStream的内部缓冲区无法访问)。 byte[] buf1 = { 2, 3, 5, 7, 11 }; var ms = new MemoryStream(buf1); byte[] buf2 = ms.GetBuffer(); // exception will be thrown here 这是在一个普通的旧控制台应用程序,我正在作为pipe理员运行。 我无法想象更多的特权设置,我可以给这个代码。 那么为什么我不能在这个缓冲区? (如果没有人可以,GetBuffer方法有什么意义?) MSDN文档说 要使用公开可见的缓冲区创buildMemoryStream实例,请使用MemoryStream,MemoryStream(array [],Int32,Int32,Boolean,Boolean)或MemoryStream(Int32)。 我不是那样做的吗? PS我不想使用ToArray(),因为它做了一个副本。

如何从IMMDevice获取信息?

对于IMMDevice,我是一个完整的初学者,而且我需要问一个好的,简单的方法来获取某些设备的信息。 在我的程序中,我已经用GetDefaultAudioEndpoint()成功地设置了一个指针。 现在我只需要能够从中获得一些基本的信息,比如一些演讲者的信息或者演讲者的ID等等。 有什么好办法可以让初学者能够接受? 谢谢!

Java中的跨进程同步

我如何同步在Windows上运行的两个Java进程? 我正在寻找像Win32命名互斥对象,它允许两个进程使用相同的locking对象。 谢谢

使用PHP生成Windows .lnk文件

我正在开发一个项目,该项目涉及运行ProFTPd的FTP服务器以及为用户创build帐户的PHP / MySQL后端。 在创build帐户后,用户会发送电子邮件,其中包含他们的帐户详细信息以及下载FileZilla或Cyber​​Duck的说明,具体取决于他们的操作系统,通过用户代理string检测到。 为了让初学者更容易,我想为FileZilla生成的.lnk文件以帐户login详细信息作为参数,所以他们只需要点击.lnk文件来打开服务器。 这不是关键的function,而是更多的技术挑战。 我的问题是: 这是否可行? 有没有其他的select(例如,用指向Filezilla可执行文件的脚本生成一个.bat文件?) 有没有问题,也许有相对/绝对path指向可执行文件? 更进一步,在单个帐户/单个服务器上(web界面不是一个选项)向用户提供FTP访问的最简单方法是什么?

创build一个脚本语言

有人可以引导我创build一个针对WSH(Windows脚本宿主)的脚本语言的正确方向吗? 我已经用Googlesearch了一下,但是似乎与我之前几个月search它的链接相比,这个链接似乎要less得多。 谢谢