草庐IT

windows - 获取当前事件窗口的线程 ID

我需要获取事件窗口的线程ID。是否有WindowsAPI函数可以让我获取此信息?有GetCurrentThreadId函数,但它会返回调用线程的ID,而不是事件窗口线程,因此它对这个目的没有用。编辑:按照建议编辑我的问题以提供有关我为什么需要这个的额外信息,这里是:我正在实现LowLevelKeyboardProc捕获键盘输入,并且由于键盘布局因程序而异,我想确保为处理键盘的事件窗口获取布局:代码片段:HWNDactive_window=GetForegroundWindow();DWORDthread_id=GetWindowThreadProcessId(active_window

c# - 获取传递给新进程(不是当前进程)的 Windows 环境变量

如何获取通过开始菜单传递给新进程的完整环境变量集,而不是传递给我的进程的环境变量集?或者如何使用这组环境变量启动进程?(从技术上讲,我不需要在初始过程中访问它们)这些可以发散,例如,如果我的进程启动,然后用户使用环境变量GUI来修改它们。用例:我正在编写一个启动器实用程序,其行为类似于开始菜单,用于启动应用程序。一个合适的解决方案需要做到以下几点:获取机器和用户环境变量合并来自机器和用户的PATH变量(是否合并任何其他变量?)获取HOMEDRIVE、HOMEPATH、USERNAME、USERPROFILE以及System.Environment.GetEnvironmentVaria

windows - 阻止 MSVC++ 调试错误阻止当前进程?

Windows上任何失败的ASSERT语句都会导致出现以下调试消息并卡住应用程序执行。我意识到这是预期的行为,但它会在headless机器上定期运行,因此可以防止单元测试失败,而是无限期地等待用户输入。是否有注册表项或编译器标志可用于防止此消息框请求用户输入,同时仍允许测试在ASSERT下失败?基本上,我想在不修改任何代码的情况下执行此操作,只需更改编译器或Windows选项。谢谢!MicrosoftVisualC++DebugLibraryASSERThttp://img519.imageshack.us/img519/853/snapshotbu1.png

windows - 确定给定窗口当前是否正在移动

基本上,我正在寻找IsWindowMoving(HWND)Win32API调用。我需要知道用户当前是否正在移动窗口。该窗口不属于我,因此无法监听WM_SYSCOMMAND/SC_MOVE或WM_MOVING(由于32/64互操作,我不想子类化或Hook)。 最佳答案 您可以使用GetGUIThreadInfo执行此操作-无需Hook。使用GetWindowThreadProcessId获取hwnd的TID,然后检查GUITHREADINFO.flags和GUITHREADINFO.hwndMoveSize以查看您的窗口是否处于移动/

python - 当前 Python 实例的路径?

我需要访问Windows上当前正在执行的Python实例安装目录的Scripts和tcl子目录。找到这些目录的最佳方法是什么? 最佳答案 看看sys.prefix和sys.exec_prefix>>>importsys>>>sys.prefix'/System/Library/Frameworks/Python.framework/Versions/2.6'>>>sys.exec_prefix'/System/Library/Frameworks/Python.framework/Versions/2.6'

c - 如何检查程序是否已在当前登录 session 期间执行? ( Windows )

在我正在开发的一个应用程序中(用C语言),在执行主应用程序之前必须先运行一个加载器应用程序。我已经做到了,因此主应用程序在启动时将加载器应用程序作为子应用程序运行,以便自动执行此任务。这一切都很好,除了加载器应用程序只需要在用户当前登录session期间运行一次以使主应用程序正常工作,并且每次主应用程序执行时都必须运行它是一个真正的痛。所以我要问的是:有没有办法检查加载程序是否已经使用某些Windows或C功能运行?理想情况下,这样的事情会很棒,虽然我不知道它是否可能:if(thisapp.exehasBeenExecuted)return;elsespawnl(app_path,ap

windows - 断言当前线程不持有 CRITICAL_SECTION 锁

我有一个维护列表的对象;其中一个辅助方法需要锁定列表找到第一个元素解锁列表通知另一个线程开始清理操作等待另一个线程完成重复此操作直到列表为空。清理操作从另一个线程的列表中删除对象,因此它需要在两者之间锁定列表。只要不调用helper时已经持有列表上的锁,这就可以正常工作,因为解锁操作实际上不会允许其他线程访问列表,所以我想在此标记一个错误案例。据我所知,CRITICAL_SECTIONAPI没有提供官方支持的方式来查询当前进程是否持有这个对象,所以我正在考虑“hack-ish”方法(毕竟,它是一种调试辅助工具,并不打算用于生产代码中):变体1是检查CRITICAL_SECTION结构的

c++ - 如何获取当前进程的线程 ID 列表

EnumProcess或CreateToolhelp32Snapshot函数帮助我们获取进程信息,包括进程ID。但是我想知道获取当前进程的线程id列表。DWORDGetMainThreadId(DWORDpId){LPVOIDlpThId;_asm{moveax,fs:[18h]addeax,36mov[lpThId],eax}HANDLEhProcess=OpenProcess(PROCESS_VM_READ,FALSE,pId);if(hProcess==NULL)returnNULL;DWORDtId;if(ReadProcessMemory(hProcess,lpThId,&t

暂停当前​​歌曲时 Windows Phone 应用程序崩溃

我的目标是当麦克风的振幅超过某个值时暂停当前播放的歌曲。但是当振幅增加该值时,应用程序突然退出。这是为什么?如何解决这个问题?[我所做的是在音乐中播放一首歌,打开此应用程序并按下按钮并发出超过该值的声音。然后应用突然退出]usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Net;usingSystem.Windows;usingSystem.Windows.Controls;usingSystem.Windows.Navigation;usingMicrosoft.Phone.Control

Windows DOS mkdir 命名为当前日期

在Windows7中,如果当前日期是2014-09-14,我想mkdir命名为当前日期,并且文件夹名为2014-09-14。所以我写了一个这样的bat文件:@echooffset/Acurrent_date=date/tmkdir%current_date%但是没有效果。有人可以给我一些建议吗?非常感谢! 最佳答案 这应该创建文件夹:此代码的前四行将为您提供在XPPro及更高版本中可靠的YYDDMMYYYYHHMinSec变量。@echoofffor/f"tokens=2delims=="%%ain('wmicOSGetlocald