Articles of c + +

如何在Windows中创build一个具有尾随句点的文件名?

如何处理在Python中以句号结尾的文件名? 根据MSDN的网站,这些文件名在Windows中是有效的,但是每当我尝试在Python中创build一个文件名时,它将删除最后一个时间段。 我甚至尝试用os.open创build一个原始文件描述符,但是它仍然删除了这个句点。 例如,这将创build一个简单名为“ test ”的文件 os.open('test.', os.O_CREAT | os.O_WRONLY, 0777) 编辑: 这是确切的报价 关于文件名和目录中的空格和点。 限制是在Windowsshell – 而不是在Windows或NT。 使用'bash',你可以在文件名的开始和结尾使用空格(或点)来创build文件。 然后,您可以在资源pipe理器中列出并打开这些文件,并且可以在shell(cmd.exe)中“列出”它们,但是您不一定能够从shell中打开它们(尤其是后面的空格和点)。

我如何调用另一个类的静态方法

我有一个类,让我们说说有一个静态方法的CAppPath : public: static CString GetAppPath(); 并在CAppPath.cpp定义为: CString CAppPath::GetAppPath() { return "C:\..\MypAth"; } 现在我有另外一个类CXMLHandler ,并且在其中包含了CAppPath.h 。 但是,如何调用GetAppPath()方法? 我试过了: #include "CAppPath.h" void CXMLHandler::MyMethod { CNDSClientDlg->GetAppPath(); } 但它不起作用。 我应该如何访问这个方法? 既然它是一个静态的方法,我是否需要创build一个类的对象,或者我应该让类本身是静态的?

CreateDirectory Windows API在c ++中的用法

我只是find了一小段代码,让我创build一个目录与Windows API而不使用system()。 唯一的问题是,我不能在子目录中创build目录。 例如 #include<windows.h> int main(){ CreateDirectory ("C:\\random", NULL); return 0; } 在C中创build一个名为random的文件夹 但是,如果我这样做 #include<windows.h> int main(){ CreateDirectory ("C:\\Users\morons", NULL); return 0; } 它在名为Usersmorons的C文件夹中创build,而不是在Users下的文件夹。 有什么build议?

我怎样才能在C#中使用GetNextWindow()?

Microsoft WinAPI文档似乎build议user32.dll包含一个名为GetNextWindow()的函数,据称允许通过重复调用此函数来枚举打开的窗口,以其Z顺序。 Pinvoke通常会给我必要的DllImport语句来使用C#中的WinAPI函数。 但是,对于GetNextWindow()它没有条目。 所以我试图构build自己的: [DllImport("user32.dll")] static extern IntPtr GetNextWindow(IntPtr hWnd, uint wCmd); 不幸的是,当试图调用这个时,我得到一个EntryPointNotFoundException : Unable to find an entry point named 'GetNextWindow' in DLL 'user32.dll'. 这似乎只适用于GetNextWindow() ; Pinvoke上列出的其他function都没有问题。 我可以调用GetTopWindow()和GetWindowText()而不会引发exception。 当然,如果你可以build议一个完全不同的方式来枚举当前的Z顺序的窗口,我也很高兴听到这一点。

给定一个COM DLL,提取所有类的CLSID和相应的接口名称

我的问题类似于获取DLL文件的CLSID? , 我认为。 我有一个DLL的目录,每一个实现一个或多个COM接口。 我想得到: 1)每个接口名称2)实现接口的类的CLSID 对于每个DLL。 一切都可以通过编程方式完成是非常重要的(所以我不能使用某种COM浏览器并手动查找这些信息)。 稍后,我将查找给定接口名称的CLSID,并使用IDispatch调用一些方法。 一个替代似乎是扫描registry试图匹配types,接口和类GUID和.dll文件名。 但是,这似乎是缓慢的,不健壮的。 有人对此问题有明确的解决办法吗? 编辑: 在Ben Voigt的回应下,我得到了符合我需要的以下代码: ITypeLib *typelib; ITypeInfo *typeinfo; LoadTypeLibEx(_T("c:\\mydir\\mycom1"), REGKIND_NONE, &typelib); for (UINT i = 0;i < typelib->GetTypeInfoCount();++i) { TYPEKIND typekind; typelib->GetTypeInfoType(i, &typekind); if (typekind == TKIND_COCLASS) { // class! CComBSTR className; TYPEATTR *typeattr; typelib->GetTypeInfo(i, &typeinfo); typeinfo->GetDocumentation(MEMBERID_NIL, &className, NULL, NULL, NULL); typeinfo->GetTypeAttr(&typeattr); GUID classGUID […]

列举分配给networking接口的每个IP地址

我认为没有办法枚举我的系统上的每个networking接口和他们分配的IP地址只使用套接字。 它是否正确? 我的意思是,在Linux中,这可能是: eth0: 192.168.1.5 wlan0: 192.168.0.5 lo: 127.0.0.1 我不在乎接口名称,只是分配的IP地址。 我记得以前在Windows下用Win32做过这个(尽pipe我不记得怎么做)。 但有没有办法以便携的方式做到这一点?

什么是SDKDDKVer.h?

所有使用MSVC创build的项目都有stdafx,这是预编译的头文件,我知道它们是什么,但是targetver.h呢? 它包括SDKDDKVer.h,我找不到那是什么头。 这个是来做什么的 ?

使用SDL时未定义对WinMain @ 16的引用

我一直有很多麻烦让一切工作,以便我可以开始在Windows上开发,就像我通常在编码时使用的Linux一样。 在尝试编译SDL程序时,我有一个相当奇怪的问题。 一旦我包含SDL库,该程序拒绝编译,给我这个错误: c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../libmingw32.a<main.o>: In function 'main': C:\MinGW\msys\1.0\src\mingwrt/../mingw/main.c:73: undefined reference to 'WinMain@16' collect2: ld returned 1 exist status 我在控制台上使用MinGW。 举个例子,使用 gcc -o test main.c 这编译罚款: #include <stdio.h> #include <stdlib.h> int main(int argv, char **argc) { printf("Hello, world!\n"); return 0; } 但是,只要我添加#包括(即使没有任何SDL函数被调用),我得到上面提到的错误 使用: gcc -o test main.c -lSDL 这不能编译: #include <stdio.h> #include <stdlib.h> #include <SDL/SDL.h> int […]

只有当我没有英文string表时,LoadString才起作用

我希望能够以编程方式修改应用程序的语言,或者至less使用控制面板 – >区域和语言选项 – >格式中指定的语言。 如果我添加一个英文string表,做一个法语和德语的副本,并删除英文的一个,我可以编程方式加载法语和德语string之间切换。 如果我保留英文版,无论如何,当我尝试加载德文或法文时,英文string会被加载。 我认为这是一个资源加载程序错误,如果资源加载器忽略SetThreadLocale,如果它find一个与windows ui语言(例如Windows资源pipe理器菜单的语言)相同语言的string表。 我试图将控制面板 – >区域和语言选项 – >格式更改为法语,但没有任何效果。 资源编辑器显示没有附加语言的法语string表,但我的程序仍然总是加载英文string。 将此更改复制到系统帐户也不起作用。 这是我试过的代码: #include "stdafx.h" #include <iostream> #include "windows.h" // this should go to stdafx.h #include "resource.h" // this should not go to stdafx.h using namespace std; int _tmain(int argc, _TCHAR* argv[]) { // 1036 = french, 1031 = german SetThreadLocale(MAKELCID(1036, […]

我如何解决这些libcurl链接错误?

[Administrator@windows ~]$ g++ client.cpp -lcurl -o client.exe C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ccKXFUtC.o:client.cpp:(.text+0x23): undefined reference to `_imp__curl_global_init' C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ccKXFUtC.o:client.cpp:(.text+0x5f): undefined reference to `_imp__curl_formadd' C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ccKXFUtC.o:client.cpp:(.text+0x9b): undefined reference to `_imp__curl_formadd' C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ccKXFUtC.o:client.cpp:(.text+0xa2): undefined reference to `_imp__curl_easy_init' C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ccKXFUtC.o:client.cpp:(.text+0xc8): undefined reference to `_imp__curl_easy_setopt' C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ccKXFUtC.o:client.cpp:(.text+0xe4): undefined reference to `_imp__curl_easy_setopt' C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ccKXFUtC.o:client.cpp:(.text+0xf1): undefined reference to `_imp__curl_easy_perform' C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ccKXFUtC.o:client.cpp:(.text+0x101): undefined reference to `_imp__curl_easy_cleanup' C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ccKXFUtC.o:client.cpp:(.text+0x10e): undefined reference to `_imp__curl_formfree' C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ccKXFUtC.o:client.cpp:(.text+0x11b): undefined reference […]