Changeset 828 for trunk/dll/killproc.c
- Timestamp:
- Sep 3, 2007, 4:02:12 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/dll/killproc.c
r793 r828 16 16 06 Aug 07 GKY Reduce DosSleep times (ticket 148) 17 17 20 Aug 07 GKY Move #pragma alloc_text to end for OpenWatcom compat 18 02 Sep 07 GKY Replaced DosQProcStatus with DosQuerySysState to fix trap in thunk code 18 19 19 20 … … 33 34 #include <limits.h> 34 35 35 #include "procstat.h"36 36 #include "fm3dll.h" 37 37 #include "fm3dlg.h" 38 38 #include "fm3str.h" 39 #include "procstat.h" 39 40 40 41 #pragma data_seg(DATA2) … … 134 135 } 135 136 137 static VOID FillKillListThread3(VOID * arg) 138 { 139 HWND hwnd = *(HWND *) arg; 140 CHAR s[1036]; 141 HAB thab; 142 HMQ thmq; 143 INT rc; 144 QSPREC *ppi; 145 QSPTRREC *pbh; 146 QSLREC *pmi; 147 148 thab = WinInitialize(0); 149 thmq = WinCreateMsgQueue(thab, 0); 150 WinCancelShutdown(thmq, TRUE); 151 IncrThreadUsage(); 152 153 WinSendDlgItemMsg(hwnd, KILL_LISTBOX, LM_DELETEALL, MPVOID, MPVOID); 154 rc = DosAllocMem((PVOID) & pbh, USHRT_MAX + 4096, 155 PAG_COMMIT | OBJ_TILE | PAG_READ | PAG_WRITE); 156 if (rc) 157 Dos_Error(MB_CANCEL, rc, HWND_DESKTOP, pszSrcFile, __LINE__, 158 GetPString(IDS_OUTOFMEMORY)); 159 else { 160 rc = DosQuerySysState(QS_PROCESS | QS_MTE, 0, 0, 0, pbh, USHRT_MAX); 161 if (!rc) { 162 ppi = pbh->pProcRec; 163 while (ppi->RecType == 1) { 164 if (ppi->pid != mypid) { 165 pmi = pbh->pLibRec; 166 while (pmi && ppi->hMte != pmi->hmte) 167 pmi = pmi->pNextRec; 168 if (pmi) { 169 sprintf(s, "%04x ", ppi->pid); 170 if (!stricmp((CHAR *) pmi->pName, "SYSINIT")) 171 GetDosPgmName(ppi->pid, s + strlen(s)); 172 else { 173 if (*pmi->pName) 174 strcat(s, (CHAR *) pmi->pName); 175 else 176 strcat(s, GetPString(IDS_UNKNOWNPROCTEXT)); 177 } 178 if (WinIsWindow(thab, hwnd)) { 179 WinSendDlgItemMsg(hwnd, KILL_LISTBOX, LM_INSERTITEM, 180 MPFROM2SHORT(LIT_SORTASCENDING, 0), 181 MPFROMP(s)); 182 } 183 else 184 break; 185 } 186 } 187 ppi = (QSPREC *) (ppi->pThrdRec + ppi->cTCB); 188 } // while 189 } 190 DosFreeMem(pbh); 191 } 192 193 if (WinIsWindow(thab, hwnd)) 194 PostMsg(hwnd, UM_CONTAINER_FILLED, MPVOID, MPVOID); 195 WinDestroyMsgQueue(thmq); 196 DecrThreadUsage(); 197 WinTerminate(thab); 198 } 199 136 200 static VOID FillKillListThread(VOID * arg) 137 201 { … … 241 305 WinDefDlgProc(hwnd, WM_SETICON, MPFROMLONG(hptrIcon), MPVOID); 242 306 WinCheckButton(hwnd, KILL_CHECKBOX, fUseQProcStat); 307 WinCheckButton(hwnd, KILL2_CHECKBOX, fUseQSysState); 308 if (WinQueryButtonCheckstate(hwnd, KILL2_CHECKBOX)) { 309 WinCheckButton(hwnd, KILL_CHECKBOX, FALSE); 310 WinEnableWindow(WinWindowFromID(hwnd, KILL_CHECKBOX), FALSE); 311 } 312 if (WinQueryButtonCheckstate(hwnd, KILL_CHECKBOX)) { 313 WinCheckButton(hwnd, KILL2_CHECKBOX, FALSE); 314 WinEnableWindow(WinWindowFromID(hwnd, KILL2_CHECKBOX), FALSE); 315 } 243 316 PostMsg(hwnd, WM_COMMAND, MPFROM2SHORT(KILL_RESCAN, 0), MPVOID); 244 317 break; … … 267 340 PrfWriteProfileData(fmprof, 268 341 FM3Str, 269 342 "UseQProcStat", &fUseQProcStat, sizeof(BOOL)); 270 343 PostMsg(hwnd, WM_COMMAND, MPFROM2SHORT(KILL_RESCAN, 0), MPVOID); 344 if (WinQueryButtonCheckstate(hwnd, KILL_CHECKBOX)) { 345 WinCheckButton(hwnd, KILL2_CHECKBOX, FALSE); 346 WinEnableWindow(WinWindowFromID(hwnd, KILL2_CHECKBOX), FALSE); 347 } 348 else 349 WinEnableWindow(WinWindowFromID(hwnd, KILL2_CHECKBOX), TRUE); 350 break; 351 case KILL2_CHECKBOX: 352 fUseQSysState = WinQueryButtonCheckstate(hwnd, KILL2_CHECKBOX); 353 PrfWriteProfileData(fmprof, 354 FM3Str, 355 "UseQSysState", &fUseQSysState, sizeof(BOOL)); 356 PostMsg(hwnd, WM_COMMAND, MPFROM2SHORT(KILL_RESCAN, 0), MPVOID); 357 if (WinQueryButtonCheckstate(hwnd, KILL2_CHECKBOX)) { 358 WinCheckButton(hwnd, KILL_CHECKBOX, FALSE); 359 WinEnableWindow(WinWindowFromID(hwnd, KILL_CHECKBOX), FALSE); 360 } 361 else 362 WinEnableWindow(WinWindowFromID(hwnd, KILL_CHECKBOX), TRUE); 271 363 break; 272 364 … … 322 414 DosSleep(100);//05 Aug 07 GKY 250 323 415 else 324 WinDismissDlg(hwnd, 0); 325 } 416 WinDismissDlg(hwnd, 0); 417 } 418 else if (fUseQSysState) 419 if (_beginthread(FillKillListThread3, 420 NULL, 65536, (PVOID) & hwnd) != -1) 421 DosSleep(100);//05 Aug 07 GKY 250 422 else 423 WinDismissDlg(hwnd, 0); 326 424 else { 327 425 if (_beginthread(FillKillListThread, … … 408 506 409 507 #pragma alloc_text(KILLPROC,FillKillListThread,FillKillListThread2,GetDosPgmName,KillDlgProc) 508 #pragma alloc_text(KILLPROC,FillKillListThread)
Note:
See TracChangeset
for help on using the changeset viewer.