map
时间:2008-07-24 16:54:20
来源:论坛整理 作者: 编辑:chinaitzhe
利用OpenSCManager()获得一个SC_HANDLE的句柄.
然后利用EnumServicesStatusEx()获得windows的服务列表.并将结果存在mss中.其中服务的显示名为Key.服务名是value.
并将服务显示名存入到COMBOBOX组件形成一个下拉列表.
但是我用当我用下拉列表中的当前字符串去查mss中的value时.总是查不到.我通过调试确定传入的值是正确的.
哪个知道原因告诉小弟一下.
网友回复:LPTSTR改成basic_string <TCHAR>
网友回复:遍历下map,看是否真实存入!
网友回复:
请问一下为什么不成用LPTSTR? 为什么要用TCHAR?
网友回复:有没有可能是类型不匹配?
网友回复:
我用的是VS2005.里面存储的值没有问题
网友回复:比较的时候只是比较指针的值大小而不是比较内容,你说会正确么?
就跟char* p = "123";
char* p2=new char[4];
strcpy(p2,p);
if( p == p2 ) ?这里相等么?
网友回复:
- C/C code
Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ #include<iostream> #include<map> #include "windows.h" #include "Winsvc.h" using namespace std; int main() { typedef map<basic_string<TCHAR>,basic_string<TCHAR> > SSMap; SSMap srvTable; SC_HANDLE sc_handle; sc_handle = ::OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS); if(sc_handle != NULL) { LPENUM_SERVICE_STATUS_PROCESS lpServices; DWORD pcbBytesNeeded; DWORD lpResumeHandle = 0; DWORD lpServicesReturned; lpServices = (LPENUM_SERVICE_STATUS_PROCESS) LocalAlloc(LPTR, 30720); if(EnumServicesStatusEx(sc_handle,SC_ENUM_PROCESS_INFO,SERVICE_WIN32,SERVICE_STATE_ALL,(LPBYTE)lpServices,30720,&pcbBytesNeeded,&lpServicesReturned,&lpResumeHandle,NULL)) { for(DWORD i=0;i< lpServicesReturned -1; i) { cout<<lpServices[i].lpDisplayName<<endl; srvTable[lpServices[i].lpDisplayName]=lpServices[i].lpServiceName; } ::CloseServiceHandle(sc_handle); } else { //错误处理 } } }
关键字:map,LPTSTR,LPTSTR,查找,问题,
上一篇:办过婚宴的进来
下一篇:下面没有链接了











文章评论
共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面