Skip to content

Commit ad24d78

Browse files
authored
Add files via upload
1 parent 6fb1500 commit ad24d78

File tree

1 file changed

+77
-13
lines changed

1 file changed

+77
-13
lines changed

SetProcessGui/SetProcessGui.h

Lines changed: 77 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -399,7 +399,7 @@ DWORD ExtractPID(const char* str) {
399399

400400
void ExtractProcessName(const char* str, char* processName, size_t bufferSize) {
401401
if (!str || !processName || bufferSize == 0) {
402-
return; // Manejo básico de errores de parámetros nulos o tamaño de buffer cero
402+
return;
403403
}
404404

405405
const char* start = str; // El inicio del nombre del proceso
@@ -409,14 +409,14 @@ void ExtractProcessName(const char* str, char* processName, size_t bufferSize) {
409409
size_t length = end - start;
410410
if (length < bufferSize - 1) {
411411
strncpy(processName, start, length);
412-
processName[length] = '\0'; // Asegurar que la cadena termina con '\0'
412+
processName[length] = '\0';
413413
} else {
414414
strncpy(processName, start, bufferSize - 1);
415-
processName[bufferSize - 1] = '\0'; // Asegurar que la cadena termina con '\0'
415+
processName[bufferSize - 1] = '\0';
416416
}
417417
} else {
418418
// No se encontró el nombre del proceso en el formato esperado
419-
processName[0] = '\0'; // Cadena vacía
419+
processName[0] = '\0';
420420
}
421421
}
422422

@@ -453,7 +453,7 @@ void UpdateToolTipText(HWND hwndControl, LPSTR text)
453453
toolInfo.hwnd = GetParent(hwndControl); // Obtener el HWND del control padre
454454
toolInfo.uFlags = TTF_IDISHWND | TTF_SUBCLASS;
455455
toolInfo.uId = (UINT_PTR)hwndControl;
456-
toolInfo.lpszText = text; // Cambiado a text (LPSTR)
456+
toolInfo.lpszText = text;
457457

458458
SendMessage(hwndToolTip, TTM_UPDATETIPTEXT, 0, (LPARAM)&toolInfo);
459459
}
@@ -938,21 +938,85 @@ void SetProcessCritical(DWORD dwProcessId, BOOL Critical){
938938
CloseHandle(hProcess);
939939
}
940940

941-
DWORD GetProcInfo(DWORD dwProcessId, LPSTR lpPath, DWORD nSize)
942-
{
943-
HANDLE hProcess = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, FALSE, dwProcessId);
941+
char* GetProcessCommandLine(DWORD dwProcessId) {
942+
HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, dwProcessId);
943+
if (!hProcess) {
944+
return NULL;
945+
}
946+
947+
PROCESS_BASIC_INFORMATION pbi;
948+
ULONG returnLength;
949+
NTSTATUS status = NtQueryInformationProcess(hProcess, ProcessBasicInformation, &pbi, sizeof(pbi), &returnLength);
950+
if (status != 0) {
951+
CloseHandle(hProcess);
952+
return NULL;
953+
}
954+
955+
PEB peb;
956+
if (!ReadProcessMemory(hProcess, pbi.PebBaseAddress, &peb, sizeof(peb), NULL)) {
957+
CloseHandle(hProcess);
958+
return NULL;
959+
}
960+
961+
RTL_USER_PROCESS_PARAMETERS procParams;
962+
if (!ReadProcessMemory(hProcess, peb.ProcessParameters, &procParams, sizeof(procParams), NULL)) {
963+
CloseHandle(hProcess);
964+
return NULL;
965+
}
966+
967+
UNICODE_STRING commandLineUnicode = procParams.CommandLine;
968+
WCHAR* commandLineBuffer = (WCHAR*)malloc(commandLineUnicode.Length + sizeof(WCHAR));
969+
if (!commandLineBuffer) {
970+
CloseHandle(hProcess);
971+
return NULL;
972+
}
973+
974+
if (!ReadProcessMemory(hProcess, commandLineUnicode.Buffer, commandLineBuffer, commandLineUnicode.Length, NULL)) {
975+
free(commandLineBuffer);
976+
CloseHandle(hProcess);
977+
return NULL;
978+
}
979+
980+
commandLineBuffer[commandLineUnicode.Length / sizeof(WCHAR)] = L'\0'; // Asegurarse de que está terminada en null
981+
982+
// Convertir UNICODE_STRING a char*
983+
int bufferSize = WideCharToMultiByte(CP_UTF8, 0, commandLineBuffer, -1, NULL, 0, NULL, NULL);
984+
char* commandLine = (char*)malloc(bufferSize);
985+
if (!commandLine) {
986+
free(commandLineBuffer);
987+
CloseHandle(hProcess);
988+
return NULL;
989+
}
990+
WideCharToMultiByte(CP_UTF8, 0, commandLineBuffer, -1, commandLine, bufferSize, NULL, NULL);
991+
992+
free(commandLineBuffer);
993+
CloseHandle(hProcess);
994+
return commandLine;
995+
}
996+
997+
void GetProcInfo(DWORD dwProcessId, LPSTR lpPath, DWORD nSize) {
998+
HANDLE hProcess = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION | PROCESS_VM_READ, FALSE, dwProcessId);
944999
if (hProcess == NULL) {
945-
return 0;
1000+
return;
9461001
}
9471002

9481003
DWORD dwLength = nSize;
9491004
if (!QueryFullProcessImageName(hProcess, 0, lpPath, &dwLength)) {
9501005
CloseHandle(hProcess);
951-
return 0;
1006+
return;
1007+
}
1008+
1009+
char* commandLine = GetProcessCommandLine(dwProcessId);
1010+
if (commandLine == NULL) {
1011+
CloseHandle(hProcess);
1012+
return;
9521013
}
9531014

1015+
// Concatenar la línea de comando a la ruta completa del proceso
1016+
strcat(lpPath, "\n\nCommandLine:\n");
1017+
strcat(lpPath, commandLine);
1018+
free(commandLine);
9541019
CloseHandle(hProcess);
955-
return dwLength;
9561020
}
9571021

9581022
void CheckMenuItemProcess(HMENU hMenu, char* ProcessName, DWORD dwProcessId){
@@ -1312,10 +1376,10 @@ void CALLBACK WinEventProc(
13121376
)
13131377

13141378
{
1315-
if (dwEvent == EVENT_SYSTEM_FOREGROUND && hwnd != NULL && idObject == OBJID_WINDOW && hwnd != HWNDPrev || dwEvent == EVENT_OBJECT_CREATE && hwnd != NULL && idObject == OBJID_WINDOW && hwnd != HWNDPrev)
1379+
if (dwEvent == EVENT_OBJECT_CREATE && hwnd != NULL && hwnd != HWNDPrev)
13161380
{
13171381

1318-
if (idChild != CHILDID_SELF) {
1382+
if (idObject != OBJID_WINDOW && idChild != CHILDID_SELF) {
13191383
return;
13201384
}
13211385

0 commit comments

Comments
 (0)