Tag: winapi

如何拦截编辑框中的粘贴事件?

如何在值转移到对象之前拦截编辑框中的粘贴事件?

VS2010 C代码 – 字符串池

当您使用以下标志进行编译时,如果在VS 2010中代码崩溃,并且如果添加/ GF-或删除opimization标志,则它们不会崩溃。 崩溃发生在转换’if(path [i] ==’/’)’的汇编代码中。 我喜欢理解编译器在这里做的优化并导致崩溃。 期待一些指示。 -Karthik cl.exe /MD /O2 test.c // Test.c #include #include void testpath(char* path, int bufsiz) { int i; printf(“%p\n”, path); for( i=0; i < strlen(path); i++ ) { if( path[i] == '/' ) { path[i] = '\\'; } } } int main() { const char* path = "testexport.prj"; […]

通过管道重定向时捕获SetConsoleTextAttribute的效果?

我已经将使用CreateProcess生成的子进程的stdout重定向到管道。 它的工作正常,但据我所知,没有关于颜色变化的信息正在传递。 子进程正在使用SetConsoleTextAttribute来更改文本颜色 – 是否可以通过管道检测到这一点,如果是,如何检测? 我最终在RichEdit控件中显示输出,我想尽可能捕获颜色信息。 这是在C和XP和Vista上的Win32 API。

TreeView fontsize – 自定义绘制或所有者绘制

我想更改TreeView控件的字体大小。 在goolge上搜索之后,我只是想知道应该为这个TreeView使用CustomDraw。 但是NMTVCUSTOMDRAW结构只有clrText和clrText ,它们在TreeView中设置显示文本的前景色和背景色。 我的问题是: Q1: How to change the font size in a TreeView? For the background color of TreeView, one can just use `TreeView_SetBkColor` or send a message. Anything similar for font size? Q2: What’s the difference between Custom Draw and Owner Draw?

FindFirstFile和FindNextFile问题

输出: The first file found is LOG_09.TXT Next file name is LOG_10.TXT Next file name is LOG_11.TXT Next fi (cut off word “file”?) function: //Find last modified log file hFind = FindFirstFile(“..\\..\\LOGS\\LOG*.TXT”, &FindFileData); if (hFind == INVALID_HANDLE_VALUE) { printf (“FindFirstFile failed (%d)\n”, GetLastError()); return; } else { printf(“The first file found is %s”,FindFileData.cFileName); //List all […]

为什么Win32 API函数CredEnumerate()如果我被模仿,则返回ERROR_NOT_FOUND?

我写了一些示例代码,当我在普通用户帐户的上下文中从Windows命令提示符调用时,使用CredEnumerate()转储所有用户保存的凭据。 但是,我真的希望能够从SYSTEM用户上下文中执行此操作,因此我已经从SYSTEM cmd提示符测试了我的程序。 当我以SYSTEM身份运行我的程序时,我像这样运行LogonUser: bLoggedOn = LogonUser(userName.c_str(), domain.c_str(), password.c_str(), LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, &userToken_); 然后我在令牌上运行ImpersonateLoggedOnUser()以给我本地用户的安全上下文。 在此之后我做: bOk = CredEnumerate(NULL, 0, &count, &pCredentials); 而且我希望这会以同样的方式返回凭据,就像我没有从系统中进入并冒充身份一样。 任何人都可以发现任何我错过的东西,真正把自己置于用户的背景中吗?

FindNextPrinterChangeNotification为ppPrinterNotifyInfo返回NULL

如果我想请求帮助,我会遇到问题: 我的任务是使用带有“print”动词的ShellExecuteEx打印一些不同类型的文件,并且需要保证所有文件的打印顺序。 因此,我使用FindFirstPrinterChangeNotification和FindNextPrinterChangeNotification来监视事件PRINTER_CHANGE_ADD_JOB和PRINTER_CHANGE_DELETE_JOB,后台我在调用ShellExecuteEx之前启动了两个不同的线程,因为我对打印文件的应用程序一无所知等等。我唯一知道的是我是唯一一个打印和我打印的文件。 我的解决方案似乎运行良好,我的程序成功识别我的文件的事件PRINTER_CHANGE_ADD_JOB,我甚至通过指定JOB_NOTIFY_FIELD_DOCUMENT来检查通过检查作为附加信息给我的内容来为我的文件发出此事件。 问题现在是事件PRINTER_CHANGE_DELETE_JOB,我没有得到关于打印作业的任何附加信息,虽然我的逻辑对于两个事件完全相同:我编写了一个通用线程函数,它只是用事件执行它是用来。 我的线程正在识别PRINTER_CHANGE_DELETE_JOB事件,但每当发生此事件时,每次调用FindNextPrinterChangeNotification时都不会在ppPrinterNotifyInfo中获得任何添加数据。 这适用于启动事件,但我使用我的日志和调试器进行了validation。 但是使用PRINTER_CHANGE_DELETE_JOB我唯一得到的就是NULL。 我已经在网上搜索了一些类似的问题,但大部分时间都与VB有关或者根本没有答案。 我正在使用一个C ++项目,因为我的代码适用于ADD_JOB事件我不认为我做错了什么。 但即使是MSDN也没有提到这种行为,我真的想确保DELETE_JOB事件是我文档的事件,我不能没有关于打印作业的任何信息。 在我收到DELETE_JOB事件后,我的代码甚至无法识别其他事件,这是正常的,因为之后完成了打印作业。 以下是我认为的相关通知代码: WORD jobNotifyFields[1] = {JOB_NOTIFY_FIELD_DOCUMENT}; PRINTER_NOTIFY_OPTIONS_TYPE pnot[1] = {JOB_NOTIFY_TYPE, 0, 0, 0, 1, jobNotifyFields}; PRINTER_NOTIFY_OPTIONS pno = {2, 0, 1, pnot}; HANDLE defaultPrinter = PrintWaiter::openDefaultPrinter(); HANDLE changeNotification = FindFirstPrinterChangeNotification( defaultPrinter, threadArgs->event, 0, &pno); […] DWORD waitResult = WAIT_FAILED; while ((waitResult = WaitForSingleObject(changeNotification, […]

如何在插入USB时触发事件

我开发了一个设备驱动程序,只要我的嵌入式设备连接到笔记本电脑的USB端口,它就会创建一个虚拟的COM端口。 现在,我需要创建一个自动拨号或新网络连接,只要设备插入笔记本电脑,就会创建虚拟COM端口。 所以我必须在USB连接检测时触发事件 触发事件应创建与创建的虚拟端口的自动拨号连接(例如:COM11)。 创建新的自动拨号连接的步骤: 单击Windows“开始”按钮。 单击“控制面板”。 单击“网络连接”。 单击“创建新连接”。 选择“设置高级连接”选项。 选择“直接连接到另一台计算机”选项。 选择“访客”选项。 为USB网络连接命名(例如“连接名称”)。 选择在PC上创建的与“通信端口(COM X)”对应的最后一个COM端口 。 选择“所有用户”选项。 单击“将此连接的快捷方式添加到我的桌面”,然后单击“确定”。 有什么方法可以实现自动拨号连接? 以上可以用任何编程语言完成,最好是“C / C ++”,因为我只知道那两个。

如何在C中找到我的计算机中已安装驱动程序的名称?

我正在尝试编写一个代码,可以在我的Windows计算机中用C(通过winapi)获取已安装驱动程序的名称? 我真的很新C,我不知道我能做什么? 你能帮我解决这个问题吗? 非常感谢你

wcscmp – 使用此function时的访问冲突

基本上,我试图使用wcsmp将*PSYSTEM_PROCESS_INFO spi (其ImageName字段)与字符串进行wcsmp ,如下所示: if (wcscmp(L”Test.exe”, spi->ImageName.Buffer)) 这似乎给我一个访问冲突错误。 同样根据我的知识,ImageName的类型为UNICODE_STRING , UNICODE_STRING结构使用PWSTR作为Buffer字段。 那么使用wcscmp比较2个PWSTR是正确的吗? 如果没有将spi->ImageName.Buffer与C中的字符串进行比较的替代方法是什么?