Changeset 798 in dev for branches/egtra/ab5.0/abdev/abdev
- Timestamp:
- Feb 5, 2011, 11:43:01 PM (13 years ago)
- Location:
- branches/egtra/ab5.0/abdev/abdev
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/egtra/ab5.0/abdev/abdev/Attach.cpp
r763 r798 4 4 5 5 #include "common.h" 6 #include <abdev/ab_common/include/Path.h> 7 #include <abdev/ab_common/include/ProcessAndModule.h> 6 8 #include <psapi.h> 7 9 #include <tlhelp32.h> … … 37 39 } 38 40 39 void InsertProcess_ToListView(HWND hListView,char *lpszAppPath,int id,char *lpszPlatform,char *lpszTitle){41 void InsertProcess_ToListView(HWND hListView,char const* lpszAppPath,int id,char const* lpszPlatform,char const * lpszTitle){ 40 42 char szAppName[MAX_PATH],temp2[MAX_PATH]; 41 43 _splitpath(lpszAppPath,NULL,NULL,szAppName,temp2); … … 75 77 ListView_SetItem(hListView,&item); 76 78 77 item.pszText= lpszPlatform;79 item.pszText=const_cast<LPSTR>(lpszPlatform); 78 80 item.iSubItem++; 79 81 ListView_SetItem(hListView,&item); 80 82 81 item.pszText= lpszTitle;83 item.pszText=const_cast<LPSTR>(lpszTitle); 82 84 item.iSubItem++; 83 85 ListView_SetItem(hListView,&item); … … 159 161 BOOL CALLBACK FindWindowProc(HWND hwnd, LPARAM lParam) 160 162 { 161 HWND* pphWnd = (HWND*)lParam; 162 *pphWnd = hwnd; 163 return FALSE; /* 列挙を中断 */ 163 auto pProcessIdAndHWnd = reinterpret_cast<std::pair<DWORD, HWND>*>(lParam); 164 DWORD processId = 0; 165 ::GetWindowThreadProcessId(hwnd, &processId); 166 if (processId == pProcessIdAndHWnd->first) 167 { 168 pProcessIdAndHWnd->second = hwnd; 169 return FALSE; 170 } 171 else 172 { 173 return TRUE; 174 } 164 175 } 165 176 void ListupProcesses(HWND hListView){ 166 char temporary[MAX_PATH];167 168 177 ListView_DeleteAllItems(hListView); 169 178 170 DWORD *pdwProcessId;171 pdwProcessId=(DWORD *)HeapAlloc(hHeap,0,8192*sizeof(DWORD));172 173 179 //プロセスを列挙 174 DWORD cbNeeded; 175 EnumProcesses(pdwProcessId,8192*sizeof(DWORD),&cbNeeded); 176 177 char szMyAppPath[MAX_PATH]; 178 GetModuleFileName(GetModuleHandle(0),szMyAppPath,MAX_PATH); 179 180 int i; 181 for(i=0;i<(int)(cbNeeded/sizeof(DWORD));i++){ 182 183 //プロセスIDを元にハンドルを取得 184 HANDLE hProcess; 185 hProcess=OpenProcess(PROCESS_ALL_ACCESS,0,pdwProcessId[i]); 186 if(!hProcess) continue; 187 180 auto processIds = ActiveBasic::Common::GetProcesses(); 181 182 char szMyAppPath[MAX_PATH] = {}; 183 GetModuleFileName(nullptr, szMyAppPath, MAX_PATH); 184 185 BOOST_FOREACH(DWORD processId, processIds) 186 { 188 187 //そのプロセスにおける実行モジュールのインスタンスハンドルを取得 189 HINSTANCE hModule; 190 DWORD cbReturned; 191 if(!EnumProcessModules( hProcess, &hModule, sizeof(HINSTANCE), &cbReturned )) 192 continue; 193 194 //実行ファイル名を取得 195 GetModuleFileNameEx(hProcess,hModule,temporary,MAX_PATH); 196 188 auto executablePath = ActiveBasic::Common::GetExecutableModulePath(processId); 197 189 198 190 ////////////////////////////// … … 200 192 ////////////////////////////// 201 193 202 //スナップショットを取得 203 HANDLE hSnapshot; 204 hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPALL,0); 205 206 THREADENTRY32 te; 207 memset(&te,0,sizeof(THREADENTRY32)); 208 te.dwSize=sizeof(THREADENTRY32); 209 if(Thread32First(hSnapshot,&te)){ 210 do{ 211 if(te.th32OwnerProcessID==pdwProcessId[i]){ 212 break; 213 } 214 }while(Thread32Next(hSnapshot,&te)); 215 } 216 217 HWND hwnd; 218 hwnd=0; 219 EnumThreadWindows(te.th32ThreadID,FindWindowProc,(LPARAM)&hwnd); 220 221 while(GetParent(hwnd)) hwnd=GetParent(hwnd); 222 223 char szWndTitle[1024]; 224 szWndTitle[0]=0; 225 if(hwnd) GetWindowText(hwnd,szWndTitle,1024); 226 227 CloseHandle(hSnapshot); 228 229 230 231 CloseHandle(hProcess); 232 233 if(lstrcmpi(szMyAppPath,temporary)==0){ 194 std::pair<DWORD, HWND> processIdAndHWnd(processId, nullptr); 195 EnumWindows(FindWindowProc, reinterpret_cast<LPARAM>(&processIdAndHWnd)); 196 HWND hwnd = processIdAndHWnd.second; 197 198 TCHAR szWndTitle[1024] = {}; 199 if(hwnd) GetWindowText(hwnd, szWndTitle, 1024); 200 201 if (ActiveBasic::Common::IsPathEqual(Jenga::Common::ToWString(szMyAppPath).c_str(), executablePath.wstring().c_str())) 202 { 234 203 //自分自身(ProjectEditor.exe)は無視 235 204 continue; … … 237 206 238 207 //リストビューへ追加 239 InsertProcess_ToListView(hListView,temporary,pdwProcessId[i],"Win32",szWndTitle); 240 } 241 242 HeapDefaultFree(pdwProcessId); 208 InsertProcess_ToListView(hListView,executablePath.string().c_str(),processId,"Win32",szWndTitle); 209 } 243 210 } 244 211 -
branches/egtra/ab5.0/abdev/abdev/abdev.vcxproj
r788 r798 53 53 <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> 54 54 <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" /> 55 <Import Project="..\ab-common.props" /> 55 56 <Import Project="..\ab-common-32.props" /> 56 <Import Project="..\ab-common.props" />57 57 </ImportGroup> 58 58 <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> 59 59 <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> 60 60 <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" /> 61 <Import Project="..\ab-common.props" /> 61 62 <Import Project="..\ab-common-32.props" /> 62 <Import Project="..\ab-common.props" />63 63 </ImportGroup> 64 64 <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets"> … … 66 66 <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" /> 67 67 <Import Project="..\ab-common.props" /> 68 <Import Project="..\ab-common-64.props" /> 68 69 </ImportGroup> 69 70 <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets"> … … 71 72 <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" /> 72 73 <Import Project="..\ab-common.props" /> 74 <Import Project="..\ab-common-64.props" /> 73 75 </ImportGroup> 74 76 <PropertyGroup Label="UserMacros" /> … … 76 78 <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion> 77 79 <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\build\$(Configuration)\</OutDir> 78 <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)-$(Platform)\</IntDir>79 80 <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental> 80 81 <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Configuration)-$(Platform)\</OutDir> 81 <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)-$(Platform)\</IntDir>82 82 <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental> 83 83 <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\build\$(Configuration)\</OutDir> 84 <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)-$(Platform)\</IntDir>85 84 <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental> 86 85 <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Configuration)-$(Platform)\</OutDir> 87 <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)-$(Platform)\</IntDir>88 86 <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental> 89 87 </PropertyGroup> … … 101 99 <AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions> 102 100 <Optimization>Disabled</Optimization> 103 <PreprocessorDefinitions> WIN32;_DEBUG;_WINDOWS;JPN;WINVER=0x040A;_WIN32_WINNT=0x0403;_WIN32_WINDOWS=0x0400;_WIN32_IE=0x0401;TIXML_USE_STL;%(PreprocessorDefinitions)</PreprocessorDefinitions>101 <PreprocessorDefinitions>_DEBUG;_WINDOWS;JPN;TIXML_USE_STL;%(PreprocessorDefinitions)</PreprocessorDefinitions> 104 102 <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> 105 103 <PrecompiledHeader>Use</PrecompiledHeader> … … 114 112 <Link> 115 113 <AdditionalDependencies>unicows.lib;comctl32.lib;imm32.lib;htmlhelp.lib;rpcrt4.lib;imagehlp.lib;tinyxmld_STL.lib;dwmapi.lib;%(AdditionalDependencies)</AdditionalDependencies> 116 <AdditionalLibraryDirectories>..\..\jenga\lib\x86;..\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>117 114 <DelayLoadDLLs>PSAPI.DLL;DWMAPI.DLL;%(DelayLoadDLLs)</DelayLoadDLLs> 118 <GenerateDebugInformation>true</GenerateDebugInformation>119 115 <SubSystem>Windows</SubSystem> 120 116 <TargetMachine>MachineX86</TargetMachine> … … 141 137 <AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions> 142 138 <Optimization>Disabled</Optimization> 143 <PreprocessorDefinitions> WIN32;_DEBUG;_WINDOWS;JPN;WINVER=0x0501;_WIN32_WINNT=0x0501;TIXML_USE_STL;%(PreprocessorDefinitions)</PreprocessorDefinitions>139 <PreprocessorDefinitions>_DEBUG;_WINDOWS;JPN;TIXML_USE_STL;%(PreprocessorDefinitions)</PreprocessorDefinitions> 144 140 <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> 145 141 <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> … … 154 150 <Link> 155 151 <AdditionalDependencies>comctl32.lib;imm32.lib;htmlhelp.lib;rpcrt4.lib;imagehlp.lib;tinyxmld_STL.lib;%(AdditionalDependencies)</AdditionalDependencies> 156 <AdditionalLibraryDirectories>..\..\jenga\lib\x64;..\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>157 <GenerateDebugInformation>true</GenerateDebugInformation>158 152 <SubSystem>Windows</SubSystem> 159 153 <TargetMachine>MachineX64</TargetMachine> … … 180 174 <AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions> 181 175 <Optimization>MinSpace</Optimization> 182 <PreprocessorDefinitions> WIN32;NDEBUG;_WINDOWS;JPN;WINVER=0x040A;_WIN32_WINNT=0x0403;_WIN32_WINDOWS=0x0400;_WIN32_IE=0x0401;TIXML_USE_STL;%(PreprocessorDefinitions)</PreprocessorDefinitions>176 <PreprocessorDefinitions>NDEBUG;_WINDOWS;JPN;TIXML_USE_STL;%(PreprocessorDefinitions)</PreprocessorDefinitions> 183 177 <RuntimeLibrary>MultiThreaded</RuntimeLibrary> 184 178 <PrecompiledHeader>Use</PrecompiledHeader> … … 192 186 <Link> 193 187 <AdditionalDependencies>unicows.lib;comctl32.lib;imm32.lib;htmlhelp.lib;rpcrt4.lib;imagehlp.lib;tinyxml_STL.lib;dwmapi.lib;%(AdditionalDependencies)</AdditionalDependencies> 194 <AdditionalLibraryDirectories>..\..\jenga\lib\x86;..\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>195 188 <DelayLoadDLLs>PSAPI.DLL;DWMAPI.DLL;%(DelayLoadDLLs)</DelayLoadDLLs> 196 <GenerateDebugInformation>true</GenerateDebugInformation>197 189 <GenerateMapFile>true</GenerateMapFile> 198 190 <SubSystem>Windows</SubSystem> … … 222 214 <AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions> 223 215 <Optimization>MinSpace</Optimization> 224 <PreprocessorDefinitions> WIN32;NDEBUG;_WINDOWS;JPN;WINVER=0x0501;_WIN32_WINNT=0x0501;TIXML_USE_STL;%(PreprocessorDefinitions)</PreprocessorDefinitions>216 <PreprocessorDefinitions>NDEBUG;_WINDOWS;JPN;TIXML_USE_STL;%(PreprocessorDefinitions)</PreprocessorDefinitions> 225 217 <RuntimeLibrary>MultiThreaded</RuntimeLibrary> 226 218 <PrecompiledHeader>Use</PrecompiledHeader> … … 234 226 <Link> 235 227 <AdditionalDependencies>comctl32.lib;imm32.lib;htmlhelp.lib;rpcrt4.lib;imagehlp.lib;tinyxml_STL.lib;%(AdditionalDependencies)</AdditionalDependencies> 236 <AdditionalLibraryDirectories>..\..\jenga\lib\x64;..\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>237 228 <DelayLoadDLLs>PSAPI.DLL;%(DelayLoadDLLs)</DelayLoadDLLs> 238 <GenerateDebugInformation>true</GenerateDebugInformation>239 229 <GenerateMapFile>true</GenerateMapFile> 240 230 <SubSystem>Windows</SubSystem>
Note:
See TracChangeset
for help on using the changeset viewer.