Tag: winapi

如何使用win32 API在系统托盘图标中显示文本?

尝试创建一个小型监视器应用程序,使用win32 API在C中的系统托盘中显示当前Internet使用率百分比。 还希望根据相对于月份剩余天数使用的颜色背景或颜色文本。 编辑:澄清我希望系统托盘图标是动态的。 随着百分比的变化,我更新了系统托盘图标。 寻找仅使用普通旧win32(即没有MFC或WTL)的解决方案。

WSAStartup函数如何启动Winsock DLL的使用?

WSAStartup函数如何启动Winsock DLL的使用? 根据文件 WSAStartup函数必须是应用程序或DLL调用的第一个Windows套接字函数。 它允许应用程序或DLL指定所需的Windows套接字版本,并检索特定Windows套接字实现的详细信息。 应用程序或DLL只能在成功调用WSAStartup后发出更多Windows套接字函数。 这个函数初始化WSADATA数据结构,但是在套接字编程中我们不会将WSDATA传递给任何函数,那么程序如何了解Windows套接字版本和其他细节呢? 例如,在此代码中 #include #include #pragma comment(lib, “ws2_32”) void Run(int argc, char* argv[]) { char* host = argc h_addr; printf(“IP Address: %s\n”, inet_ntoa(*addr)); } else printf(“ERROR: Resolution failure.\n”); } int main(int argc, char* argv[]) { WSADATA wsaData; if(WSAStartup(0x202, &wsaData) == 0) { Run(argc, argv); WSACleanup(); } else printf(“ERROR: Initialization failure.\n”); […]

从我们按下键盘上的键开始,直到它出现在您的word文档中

这个问题在我的求职面试中……我只是想看看我是否提供了所有细节……

C错误:表达式必须有一个常量值(windows代码示例)

我一直在尝试编译代码“编辑控件” 从这里:http: //zetcode.com/gui/winapi/controls/ 现在我的编译器(VS2013)不会让我编译此代码同时给我这个错误:错误574错误C2057:预期的常量表达式 代码部分: if (HIWORD(wParam) == BN_CLICKED) { int len = GetWindowTextLengthW(hwndEdit) + 1; wchar_t text[len]; GetWindowTextW(hwndEdit, text, len); SetWindowTextW(hwnd, text); } 编辑: 我使用此代码来解决问题: wchar_t *text = calloc(len, sizeof(wchar_t)); if (text != NULL) { // STUFF } free(text);

如何用C ++打开文件夹

我需要打开一个显示特定文件夹的资源管理器窗口,让我们说”C:\\Windows”我应该用什么function来实现我的目标? 我正在使用Windows所以可以使用API​​,我也可以使用boost,但我不能使用C ++ 11。

错误地使用InterlockedCompareExchange以primefaces方式复制值?

我不能在这里使用C ++ 11primefaces 我对使用InterlockedCompareExchange()以“primefaces地”读取变量有疑问。 我在这里问了一个问题,但我在那里做的是不同的。 “交换”和“竞争者”参数(第2和第3)是“硬编码”值,即不从变量读取。 请考虑一下: // Copy the connect time DWORD dwConnectTime = InterlockedCompareExchange(&msgInfo.m_dwConnectTime, msgInfo.m_dwConnectTime, msgInfo.m_dwConnectTime); 这旨在将msgInfo.m_dwConnectTime的值与msgInfo.m_dwConnectTime的当前值msgInfo.m_dwConnectTime ,前提是msgInfo.m_dwConnectTime的当前值为msgInfo.m_dwConnectTime 。 然后返回msgInfo.m_dwConnectTime的先前值, 这是我依赖于“复制”该值的内容 。 虽然第二个和第三个参数本身的msgInfo.m_dwConnectTime读取不保证是primefaces的,但我刚才明白了。 因此,此代码是否不正确因此我需要使用锁定原语来复制msgInfo.m_dwConnectTime ?

如何将argv转换为CreateProcess的lpCommandLine参数?

我想编写一个启动另一个应用程序的应用程序。 像这样: # This will launch another_app.exe my_app.exe another_app.exe # This will launch another_app.exe with arg1, arg and arg3 arguments my_app.exe another_app.exe arg1 arg2 arg3 这里的问题是我在我的main函数中得到char* argv[] ,但是我需要将它合并到LPTSTR以便将它传递给CreateProcess 。 有一个GetCommandLine函数,但我无法使用它,因为我从Linux移植代码并绑定到argc/argv (否则,对我来说这是一个非常难看的黑客)。 我无法轻易地手动合并参数,因为argv[i]可能包含空格。 基本上,我想要CommandLineToArgvW的反向。 有没有标准的方法来做到这一点?

如何避免全局常量的“多重定义”错误?

我正在使用Windows API编写C程序。 每个主要函数都有自己的文件,原型有一个标题,包括以下内容: // Headers & global constants #pragma once #define _WIN32_LEAN_AND_MEAN #include #include #include #define szClassName TEXT(“EthicsPresentationWnd”) // Prototypes LRESULT CALLBACK WindowProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); BOOL CALLBACK FontProc1(HWND hWnd, LPARAM lParam); int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd); ATOM RegisterWindow(HINSTANCE hInstance); 我很恼火的是#define szClassName行。 我不喜欢使用宏,并且更喜欢使用正确的全局变量wchar_t szClassName[] ,但是如果我这样做,那么链接器会抱怨包含标头的每个模块中的多个定义变量。 我认为#pragma […]

Media Foundation使用C而不是C ++

我正在学习使用C代替C ++从Microsoft网站上显示的示例代码中使用Media Foundation API。 示例代码如下所示。 HRESULT CreateVideoCaptureDevice(IMFMediaSource **ppSource) { *ppSource = NULL; UINT32 count = 0; IMFAttributes *pConfig = NULL; IMFActivate **ppDevices = NULL; // Create an attribute store to hold the search criteria. HRESULT hr = MFCreateAttributes(&pConfig, 1); // Request video capture devices. if (SUCCEEDED(hr)) { hr = pConfig->SetGUID( MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE, MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_GUID ); } // […]

使用win32或其他库导入.reg文件

我的问题与这个问题有点相关,但这不是我的目标: 以编程方式将.reg文件合并到win32注册表中 我想要做的是创建一个程序,可以使用win32或其他库导入.reg文件。 我试着环顾四周但在那部分失败了。 像regedit.exe / s函数。 是否可以在不使用regedit.exe或reg.exe的情况下执行此操作? 所以..没有系统(“myfile.reg”)或类似ShellExecute()使用reg.exe或regedit.exe 谢谢!