Tag: windows 7

Windows 7开发平台

正如你们中的一些人可能已经注意到的那样,几个小时前,微软通过Technet或MSDN订阅向我们这些人发布了Windows 7 RTM。 遗憾的是,我没有时间来测试新操作系统。 我问任何在RC期间使用Visual Studio 2008的人你的经历是什么? 您觉得RC为它提供了稳定的环境吗? 它在Windows 7下运行良好吗? 简而言之,我可以依靠Windows 7作为我即将开发的平台吗? 另一方面,有没有人对新的crt做过任何测试? 结果是什么? 编辑:作为一个事后的想法,我确实对32位和64位体验感兴趣,因为操作系统只会进入其中一台机器。

使用FindFirstFileEx函数递归遍历目录

我调试了它,但我仍然不知道可能是什么罪魁祸首。 #ifndef UNICODE #define UNICODE #endif #include #include void EndWithBackslash(TCHAR* string) { if(string[wcslen(string)-1] != TEXT(‘\\’)) wcscat(string,TEXT(“\\”)); } void Browse(const TCHAR* curdir) { HANDLE hFoundFile; WIN32_FIND_DATA foundFileData; TCHAR buffer[MAX_PATH]; wcscpy(buffer,curdir); EndWithBackslash(buffer); SetCurrentDirectory(buffer); hFoundFile = FindFirstFileEx(TEXT(“*”),FINDEX_INFO_LEVELS::FindExInfoBasic,&foundFileData ,FINDEX_SEARCH_OPS::FindExSearchLimitToDirectories ,NULL , NULL); if(hFoundFile != INVALID_HANDLE_VALUE) { do { if ((foundFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) && wcscmp(foundFileData.cFileName,TEXT(“.”)) && wcscmp(foundFileData.cFileName,TEXT(“..”)) ) { EndWithBackslash(buffer); […]

发现多个USB-IrDA设备,打开并连接每个插槽

对于任何好的套接字程序员: 是否可以使用套接字通过USB端口枚举连接到PC的多个活动IrDA设备? 如果是这样,怎么样? 这是我的主要问题。 该post的其余部分详细说明了我所尝试的内容。 我正在使用Microsoft SDK和ANSI C编译器在Windows 7上开发应用程序。 应用程序设计要求它检测范围内的任何IrDA设备,使用套接字连接,并通过多个IrDA加密狗(每个设备一个加密狗)与多个设备通信,每个加密狗通过USB连接到PC。 注意:应避免使用虚拟COM端口。 我已成功使用套接字调用来枚举 ,创建套接字,连接并与单个IrDA设备通信。 这很好用。 但是,我不确定如何设置代码以成功枚举多个IrDA设备。 到目前为止,我一次只能连接到一个设备。 即使很明显Windows正在“ 发现 ”三个IrDA加密狗,如下图所示 – 整体情景(第一张图片),设备管理器(第二张图片),设备属性(第三张图片): 图1:总体情况: 图2:从设备管理器: 图3:每个“找到的”IrDA设备的属性 (包含后两个箭头以显示所有三个设备的Port-Hub地址) 我正在使用的简单场景: (某些变量名称与上面的场景描述不同,但在代码中是一致的) 第一个 – 我将两个有效的IrDA设备放在两个加密狗的前面(由几英尺隔开,因此两个设备之间没有信号模糊)现在只使用2来保持简单。 第二 – 我创建了2个IrDA套接字,使用两个句柄:socket(AF_IRDA,SOCK_STREAM,0); 3号 – 我打电话: if ((errorCode = getsockopt(gSocketHandle[0], SOL_IRLMP, IRLMP_ENUMDEVICES, (char*)pDeviceList, &deviceListLength)) == SOCKET_ERROR) 4 – 然后我用pDeviceList和中的新信息填充destinIrdaDeviceAddr memcpy(&destinIrdaDeviceAddr.irdaDeviceID[0], &pDevList->Device[0].irdaDeviceID[0], 4); 5号 – 致电: […]

对CLSID_MMDeviceEnumerator和IID_IMMDeviceEnumerator的未定义引用

尝试使用COM和CoCreateInstance()在C中使用MinGW-w64编译示例代码失败。 #include #include #include #include #include extern const CLSID CLSID_MMDeviceEnumerator; extern const IID IID_IMMDeviceEnumerator; int main( void ) { CoInitialize( NULL ); LPVOID device = NULL; const HRESULT ok = CoCreateInstance( &CLSID_MMDeviceEnumerator, NULL, CLSCTX_INPROC_SERVER, &IID_IMMDeviceEnumerator, &device ); CoUninitialize(); return EXIT_SUCCESS; } 编译:gcc main.c libole32.a -Wall -Wextra -oa 即使在mmdeviceapi.h中定义了CLSID_MMDeviceEnumerator,也找不到它。 实际上从示例代码中删除我的extern定义会得到相同的结果,因为两个externs似乎都在mmdeviceapi.h中定义 当我使用__uuidof并使用g ++编译代码时,但__uuidof的这个C“替换”却没有。 为什么没有找到COM标识符?

为什么我不能在Windows 7中测试返回码?

我有一个非常复杂的程序失败了,我已经将它简化为带有批处理文件和C程序的测试集。 我的C程序使用ExitProcess将错误级别传递回批处理文件。 有时在Windows 7(Microsoft Windows [Version 6.1.7600])上,错误级别未正确解释。 我认为这应该永远运行。 在Windows XP上,它似乎永远运行。 在两台不同的双核Windows 7机器(一台64位,一台32位)上,它会在几分钟内发生故障。 我无法想象我做错了什么,但是如果在Windows 7上有一些关于ExitProcess的搞笑,我想我会问。 这里有什么我非法做过的吗? cmd.exe的批处理文件test.bat: @ECHO OFF SET I=0 :pass SET /AI=I+1 Title %I% start/wait level250 if errorlevel 251 goto fail if errorlevel 250 goto pass :fail 程序级别250.c: #include “windows.h” static volatile int Terminate = 0; static unsigned __stdcall TestThread(void * unused) { Terminate […]

我可以在用户模式下获得Vista和Windows 7下的原始磁盘扇区的写入权限吗?

来自RawDisk网站 : Windows Vista的新安全模型严格限制在用户模式下执行的应用程序。 即使具有提升的管理权限,应用程序也无法获得对原始磁盘扇区的写入权限。 这是真的? 来自Microsoft doc : 如果未装入卷或卷没有文件系统 ,则对文件系统和存储堆栈的更改 不适用 。 请给 要么是官方Microsoft文档的链接,要么确认RawDisk网站 或者一个有效的代码示例。 (如果设置了GENERIC_WRITE ,我显然无法创建一个, CreateFile()调用失败, ERROR_ACCESS_DENIED 。) 到目前为止我发现的其他相关Microsoft文档: 阻止对卷和磁盘的直接写入操作 SL_FORCE_DIRECT_WRITE处的SL_FORCE_DIRECT_WRITE SL_FORCE_DIRECT_WRITE处的SL_FORCE_DIRECT_WRITE 结构

如何在Eclipse IDE中运行Simple C程序

我已经下载了Eclipse C / C ++ IDE。 我需要在这里运行一个简单的c程序(打印欢迎)。 在尝试运行该程序时,会弹出一条错误消息,例如”Launch failed: Binary not found” . 需要我安装任何编译器包。 ? 请帮我这样做。

在Cygwin / MinGW中安装/编译 – 如何设置包含“路径”? (符号链接?)

我一直在尝试使用Cygwin和MinGW在Windows 7中安装/编译C库。 但是,我在make期间遇到这样的错误: sys/resource.h: No such file or directory sys/times.h: No such file or directory 我之前认为这可能是特定库的一个问题,并在这里问: 在Visual Studio 2010和Cygwin / MinGW中安装igraph的各种问题(“sys / time.h not found”) ,但在遇到与不同库相同的错误后,我认为问题在于我。 尝试 cygwin/usr/include/sys/times.h和cygwin/usr/include/sys/resource.h存在。 在获得有关符号链接的建议后,我使用了ln -s /usr/include/sys sys来确保sys/times.h有效。 我去看一个特定库(igraph)的make输出。 它说它进入了一个“src”文件夹。 所以,我去了src文件夹并做了同样的事情: ln -s /usr/include/sys sys并确保sys/times.h也在src文件夹中工作。 但是,我仍然得到: fatal error: sys/times.h: No such file or directory 题 如何设置make的“路径”以在/ usr / include / sys文件夹中查找“sys […]

如何在Windows 7上禁用“开始”按钮(但不禁用任务栏)?

在Windows XP上,可以使用以下代码禁用“开始”按钮: hTray = FindWindow (TEXT(“Shell_TrayWnd”), NULL); if (hTray) { hStartButton = FindWindowEx(hTray, NULL, TEXT(“Button”), NULL); if (hStartButton) ShowWindow(hStartButton, FALSE); } 对于公共访问计算机配置,我需要能够在Windows 7上执行此操作。必须禁用“开始”按钮(不仅仅是隐藏),并且任务栏的其余部分仍必须可见且可用。 不能选择隐藏任务栏和“开始”按钮。 全屏运行不是一种选择。 使用“Start Killer”将无法正常工作,因为它实际上并未禁用“开始”按钮,只是隐藏它(用户仍然可以使用热键来启动“开始”菜单)。 我已经尝试了使用FindWindowEx和0xC017作为其第三个参数的方法,然后尝试禁用该窗口。 它不起作用。 该方法仅在首先禁用整个任务栏时才有效。 我需要的是一种只禁用“开始”菜单的方法,就像上面我在XP中重现的代码一样。 任何帮助是极大的赞赏。

为什么在C中使用错误的格式说明符会使我的程序在Windows 7上崩溃?

我的节目如下; #include #include int main() { char string[] = “Gentlemen start your engines!”; printf(“That string is %s characters long.\r\n”, strlen(string)); return 0; } 我正在gcc下编译,虽然它没有给我任何错误,程序每次运行时都会崩溃。 从我见过的例子来看,代码似乎很好。 很高兴知道我做错了什么。 谢谢。