妖怪哥ccrun

妖哥ccrun
http://topic.csdn.net/u/20080701/18/e655aa65-af49-4f18-99d5-b415747da000.html
妖哥,你的代码在cb2010中不能通过!主要是unicode的原因
函数参数定义成LPSTR在2010不通过,强制转换成(LPTSTR)可以通过,
但后面的hWnd = pWndList->Items[i];不能通过 Cannot convert 'void *' to 'HWND__ *'context的一条语句不能通过



// 运行一个应用程序,并获取其主窗口,参数越指明详细越准确
// lpAppFile:应用程序文件名
// lpWndClass:主窗口的类名,可留空
// lpWndText:主窗口的标题,可留空
HWND CrnRunAppAndGetMainWnd( LPSTR lpAppFile, LPSTR lpWndClass, LPSTR lpWndText)
{
 .......
 bool bRet = CreateProcess(NULL, (LPTSTR)lpAppFile, NULL, NULL, true, 0, 0, NULL, &si, &pi);
...........
for(int i=0; i<pWndList->Count; i++)
{
hWnd = pWndList->Items[i];//不能通过 Cannot convert 'void *' to 'HWND__ *'context
   Main.cpp(28): parsing: HWND__ * CrnRunAppAndGetMainWnd(char *,char *,char *)
   GetWindowThreadProcessId(hWnd, &dwPID);
   if(dwPID == pi.dwProcessId) // 如果进程相同
   {
 if(strlen(lpWndClass) > 0) // 判断窗口类名是否与指定的相符
   {
 GetClassName(hWnd, (LPTSTR)szWndClass, nTextLen);
......

------解决方案--------------------
hWnd = (HWND)pWndList->Items[i];