Articles of c + +

DirectShow – 获取video帧

我正在创build一个Windowsvideo捕获应用程序,并使用DirectShow进行捕获。 随着每帧的进入,我想把它作为一个原始的RGB位图到一个缓冲区,在这一点上我的代码将做我需要的任何处理。 我一直在寻找类似于我想要做的样本,并且在我看起来在线的任何地方,人们推荐使用IMediaDet和/或ISampleGrabber接口来进行逐帧捕获。 不幸的是,两者都被弃用,甚至没有在最新版本的Windows SDK中。 在DirectShow中进行逐帧捕获的最佳(现代)方式是什么? 如果没有,我是否应该使用一个不同的库,这将使我逐帧捕获?

如何从另一个应用程序的窗口中的控件读取数据?

我必须编写一个应用程序来观察另一个应用程序,并从窗口中提取信息。 从其他应用程序访问窗口并从其控件获取数据的最佳方式是什么?

false和FALSE有什么区别?

在许多程序中,我看到标识符为FALSE和false语句。 他们之间有什么区别C + +的? 另外在一些程序中,我看到了bool和BOOL 。 这两者之间有什么区别? 任何人都可以解释这些标识符之间的差异吗? 谢谢。

Win32用户模拟好奇心

我在codeproject上find了一些允许用户模拟的示例代码。 此代码通过导入以下非托pipe的Win32 API函数: [DllImport("advapi32.dll", SetLastError = true)] private static extern int LogonUser( string lpszUserName, string lpszDomain, string lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken); [DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern int DuplicateToken(IntPtr hToken,int impersonationLevel,ref IntPtr hNewToken); [DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern bool RevertToSelf(); [DllImport("kernel32.dll", CharSet […]

CreateProcess在Windows 7下失败

我试图在Windows 7的新环境下编译Windows XP中的遗留代码。它编译但是在运行时失败。 CreateProcess()返回0,GetLastError()返回2,代表ERROR_FILE_NOT_FOUND 这是我对CreateProcess的调用 STARTUPINFO StartInfo; memset(&StartInfo, 0, sizeof(StartInfo)); wcsncpy(astrCommandLine, L"TFTP", MAX_OSCOMMANDLINE_SZ-1); BOOL bFuncRetn = CreateProcess(NULL, astrCommandLine, // command line NULL, // process security attributes NULL, // primary thread security attributes NULL, // handles are inherited 0, // creation flags NULL, // use parent's environment NULL, // use parent's current directory &StartInfo, // STARTUPINFO […]

DLL函数名称使用dumpbin.exe

我已经在Visual Studio 2010中编写了一个包含许多函数和类的.dll库。当我查看文件的内容时: dumpbin.exe /EXPORTS myDll.dll 我使用某种函数位置指针获取长的函数名,如下所示(在.dll中的第二项): 2 1 0001100A ?Initialize@codec@codecX@@SANNN@Z = @ILT+5(?Initialize@codec@codecX@@SANNN@Z) 这在某种程度上很难阅读,但是我从其他.dll-s中看到了“更好的”过程/函数列表,如下所示: 141 8C 00002A08 PogoDbWriteValueProbeInfo 我怎样才能让这个.dll列表看起来像这样? PS:我的dll源代码如下所示: namespace codecX { class codec { public: static __declspec(dllexport) double Initialize(double a, double b); …

检测Windows(IE)代理设置更改

我使用WinHttpGetIEProxyConfigForCurrentUser和朋友收集当前的代理信息,当我的应用程序启动时,在每个请求看起来会大大降低性能,因为它坐几秒钟收集代理数据。 有没有一种方法来检测Windows代理设置何时更改,以便我可以caching信息,直到它更改? 谢谢,J

Windows系统时间从NTP时间更新发生变化时是否有事件?

我希望在Windows系统date/时间在我的C#应用​​程序中更改时得到通知。 我发现了SystemEvents.TimeChanged事件,为此MSDN文档说: 在用户更改系统时钟的时间时发生。 如果NTP更改时钟,这个事件是否也会被触发? 还是有另一个我可以订阅的事件? 实施细节: 我想要一个timer.Elapsed事件在特定的date/时间触发。 我的代码计算用于定时器的时间间隔。 如果有系统时间变化,则需要重新计算该计算以计算新的时间间隔并更新计时器。 答案摘要 感谢所有的评论。 我已经在下面进行了总结以供将来参考: SystemEvents.TimeChanged触发用户更改,系统调用与NTP服务器的重新同步 如果在Windows服务中运行,则需要处理消息泵以获取TimeChanged事件。 这可以通过运行调度程序来实现。 NTP服务器不适用离散系统date更改。 考虑计算得到的时钟漂移以及本地时钟与其他NTP服务器之间的偏移量,逐渐应用NTP时钟调整 对于我的实现,最好是定期评估定时器时间间隔,以考虑任何系统时间变化,而不是一次设置时间间隔,并将其放到一边。

修改GetCommandLine()的命令行参数

我试图修改我的可执行文件的命令行参数,以便GetCommandLine()将返回我设置的string。 由于我想在任何人之前修改命令行值,我已经通过/ ENTRY开关将我的入口点改为testme()函数,并且还设置了/ NODEFAULTLIB选项以排除CRT。 使用下面的代码为什么我可以通过CommandLine更改string缓冲区指针,但不能分配一个全新的缓冲区? 代码: #include <Windows.h> #include <winternl.h> typedef NTSTATUS (WINAPI *PFN_NtQueryInformationProcess)( IN HANDLE ProcessHandle, IN PROCESSINFOCLASS ProcessInformationClass, IN PVOID ProcessInformation, IN ULONG ProcessInformationLength, _Out_opt_ PULONG ReturnLength ); int testme() { // Get PEB block address PROCESS_BASIC_INFORMATION pbi; ULONG result; PFN_NtQueryInformationProcess pfnQueryProcess = (PFN_NtQueryInformationProcess) GetProcAddress(LoadLibrary("ntdll"), "NtQueryInformationProcess"); pfnQueryProcess(GetCurrentProcessId(), ProcessBasicInformation, &pbi, sizeof(pbi), &result); // Modify […]

套接字错误无法在WinSock2.h中获取函数

我创build了一个套接字包装类,但我有太多的错误,我不知道如何解决。 我试过Winsock教程错误 , 不能在MSVC 2010中包含Winsock2.h ,但没用 这里是代码: //#define WIN32_LEAN_AND_MEAN #include <iostream> #include <string> #include <Windows.h> #include <WinSock2.h> #include <WS2tcpip.h> #pragma comment(lib,"ws2_32_lib") using namespace std; #define WM_SOCKET 0x10000 class Socket { }; 这里是错误: Error 107 error C3861: 'WSAStartup': identifier not found \85 1 Project2_SocketLib Error 89 error C3861: 'WSASetLastError': identifier not found C:\Program Files (x86)\Windows Kits\8.0\Include\um\WS2tcpip.h […]