Articles of winapi

Windows UAC对话框

我有一个没有资源的应用程序(根本就没有UAC清单)。 此应用程序使用CopyFile将其自身安装到appdata / roaming文件夹。 它还设置自动启动,以便在每次启动时自动启动。 现在,随着电脑的每一个开始,UAC对话框popup并说,应用程序不会改变电脑。 如果它位于appdata中,它也在图标上有盾牌标志。 我怎样才能删除图标中的对话框/屏蔽? Windows是否检测到复制文件API并自动设置它? 感谢您的回答。

如何判断操作系统在Windows XP之后是否没有默认文件扩展名关联?

回到Windows XP的日子,可以使用下面的代码来判断扩展是否存在文件关联: TCHAR buffPath[MAX_PATH] = {0}; DWORD dwszBuffPath = MAX_PATH; HRESULT hR = ::AssocQueryString( ASSOCF_NOFIXUPS | ASSOCF_VERIFY, ASSOCSTR_EXECUTABLE, _T(".weirdassextension"), NULL, buffPath, &dwszBuffPath); if(hR != S_OK && hR != E_POINTER) { //Association does not exist } 但是从Windows 8开始, AssocQueryString API会返回S_OK并且如果没有find任何东西, buffPath设置为类似于C:\WINDOWS\system32\OpenWith.exe东西。 现在有更好的方法来确定文件扩展名没有壳牌协会? PS。 我不想只比较文件名到OpenWith.exe 。 如果有一个合法的可执行文件被称为…那么一定有更好的办法。

拦截鼠标input

我想知道是否有一种方法来拦截和修改鼠标input之前,窗口? 我想要做的是拦截鼠标移动事件,应用一些自定义缩放和加速度值,然后继续传递它们。 我需要的东西,可以做到这一点之前,input到原始inputAPI或DirectInput。

Windows XP – 在Python中以编程方式静音/取消静音

我的机器有两个audioinput:用于游戏的麦克风,以及用于吉他的线。 当使用一个重要的是另一个被静音以消除嘶嘶声/静态,所以我希望写一个小脚本,将切换哪一个被静音(这是相当不方便点击托盘图标,切换到我的input设备,静音并取消静音)。 我想也许我可以用pywin32来做到这一点,但是我能find的 所有东西似乎都是设置输出音量而不是input,而我对win32不够熟悉,甚至不知道在哪里寻找更好的信息。 有人能指出我的方向吗?

是否有可能inheritance默认的IShellFolder实现?

我试图实现一个shell命名空间扩展名,唯一的目的是覆盖特定文件夹中的缩略图处理程序( IExtractImage )。 我希望其他所有东西都和正常的文件夹一样 ,我宁愿不必重新实现在IShellFolder的默认实现中完成的所有事情。 那么,是否有可能从这个默认的实现inheritance? 如果是这样,怎么样? 使用组合也将是一个可以接受的解决scheme,但我怎样才能得到一个给定的文件夹类的实例?

C ++ Windows删除最大化框

调用CreateWindow时使用这些窗口样式 WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX 这将禁用最大化框,但有什么办法,我可以完全删除它?

如何使用GDI绘制透明文本?

我的目标是dynamic地将一些任意文本放到HICON映像中(在运行时)。我使用下面的代码: //Error checks are omitted for brevity //First create font LOGFONT lf = {0}; lf.lfHeight = -58; lf.lfWeight = FW_NORMAL; lf.lfOutPrecision = OUT_TT_PRECIS; //Use TrueType fonts for anti-alliasing lf.lfQuality = CLEARTYPE_QUALITY; lstrcpy(lf.lfFaceName, L"Segoe UI"); HFONT hFont = ::CreateFontIndirect(&lf); //HICON hIcon = original icon to use as a source //I'm using a large 256×256 pixel icon […]

Windows Server / Datacenter:设置> 64核心的CPU亲和力

SetThreadAffinityMask()允许为64个逻辑核心(处理器)设置关联掩码。 但是,Windows Datacenter最多可以有64个CPU,每个CPU有许多内核(请参见此处 )。 如何为64个内核设置线程? PS。 我在C#编码,所以一个.Net的答案是理想的,但在C中的API也很好。

Tomcat Windows服务(Apache Commons procsrv)“用户名或密码不正确”

我已经花了2天时间试图让这个工作,并希望有人能够指出我在正确的方向… 我正在尝试将Windows Server 2012 R2上的Tomcat 8作为特定用户名的服务运行。 由于我的应用程序的复杂性,我直接运行tomcat8.exe // IS / …而不是使用service.bat脚本。 当服务运行时,我在公共日志中得到这些错误: [2016-05-31 18:00:14] [debug] ( prunsrv.c:1679) [ 3280] Commons Daemon procrun log initialized [2016-05-31 18:00:14] [info] ( prunsrv.c:1683) [ 3280] Commons Daemon procrun (1.0.15.0 64-bit) started [2016-05-31 18:00:14] [info] ( prunsrv.c:1580) [ 3280] Debugging 'CertAccordServer' service… [2016-05-31 18:00:14] [debug] ( prunsrv.c:1374) [ 3280] Inside […]

如何使每个进程访问同步互斥?

我需要使用全局互斥来同步多个进程对共享文件的访问。 我创build这个互斥体: HANDLE hMutex = ::CreateMutex(NULL, FALSE, L"Global\\MySpecialName"); 然后用于: //Entering critical section VERIFY(::WaitForSingleObject(hMutex, INFINITE) == WAIT_OBJECT_0); 接着: //Leave critical section VERIFY(::ReleaseMutex(hMutex)); 这个问题是由于共享这个互斥体的进程是一个本地系统服务以及几个用login用户的凭证运行的用户模式进程而引起的。 因此,如果互斥体是由服务首先创build的,那么当用户模式进程尝试打开它时, CreateMutex失败,错误代码为ERROR_ACCESS_DENIED 。 在创build之前,我正在阅读指定互斥锁的安全描述符,但是我似乎无法弄清楚如何使其可以被everything访问,我真的不需要任何复杂的东西吗?