Список задач, процессы и приорететы
Если внутренняя переменная hPrevInst не равна нулю, то она содержит дескриптор предыдущего запущенного экземпляра вашей программы. Вы просто находите открытое окно по его дескриптору и, при необходимости, выводите на передний план. Весь код расположен в файле .DPR file, НЕ в модуле. Строки, которые вам необходимо добавить к вашему .DPR-файлу, в приведенном ниже примере помечены {*}.
- Подробности
- Родительская категория: Процессы, потоки, память, задачи
- Категория: Список задач, процессы и приорететы
Code: |
procedure TForm1.Button1Click(Sender: TObject); VAR Wnd : hWnd; buff: ARRAY [0..127] OF Char; begin ListBox1.Clear; Wnd := GetWindow(Handle, gw_HWndFirst); WHILE Wnd <> 0 DO BEGIN {Не показываем:} IF (Wnd <> Application.Handle) AND {-Собственное окно} IsWindowVisible(Wnd) AND {-Невидимые окна} (GetWindow(Wnd, gw_Owner) = 0) AND {-Дочернии окна} (GetWindowText(Wnd, buff, sizeof(buff)) <> 0) {-Окна без заголовков} THEN BEGIN GetWindowText(Wnd, buff, sizeof(buff)); ListBox1.Items.Add(StrPas(buff)); END; Wnd := GetWindow(Wnd, gw_hWndNext); END; ListBox1.ItemIndex := 0; end; |
- Подробности
- Родительская категория: Процессы, потоки, память, задачи
- Категория: Список задач, процессы и приорететы
Code: |
procedure TForm1.Button1Click(Sender: TObject); var ProcessID: DWORD; ProcessHandle: THandle; ThreadHandle: THandle; begin ProcessID := GetCurrentProcessID; ProcessHandle := OpenProcess(PROCESS_SET_INFORMATION, false, ProcessID); SetPriorityClass(ProcessHandle, REALTIME_PRIORITY_CLASS); ThreadHandle := GetCurrentThread; SetThreadPriority(ThreadHandle, THREAD_PRIORITY_TIME_CRITICAL); end; |
- Подробности
- Родительская категория: Процессы, потоки, память, задачи
- Категория: Список задач, процессы и приорететы
Есть handle запущенного PE файла. Как определить откуда он был запущен?
Я так предполагаю что getmodulefilename как и GetModuleHandle
работает в рамках только своего процесса.
А решить твою задачу .. можно так:
Тут парочка моих любимых функций
- Подробности
- Родительская категория: Процессы, потоки, память, задачи
- Категория: Список задач, процессы и приорететы
только для ALT+TAB и CTRL+ESC)
Это не совсем профессиональный способ, но он работает! Мы просто эмулируем запуск и остановку скринсейвера.
Code: |
Procedure TaskSwitchingStatus( State : Boolean ); Var OldSysParam : LongInt; Begin SystemParametersInfo( SPI_SCREENSAVERRUNNING, Word( State ), @OldSysParam, 0 ); End; |
- Подробности
- Родительская категория: Процессы, потоки, память, задачи
- Категория: Список задач, процессы и приорететы
Следующий пример изменяет приоритет приложения. Изменение приоритета следует использовать с осторожностью - т.к. присвоение слишком высокого приоритета может привети к медленной работе остальных программ и системы в целом. См. Win32 help for SetThreadPriority() function.
- Подробности
- Родительская категория: Процессы, потоки, память, задачи
- Категория: Список задач, процессы и приорететы
Или Как заказать сервисный процесс ?
Code: |
unit Stealth;
interface uses WinTypes, WinProcs, Classes, Forms, SysUtils, Controls, Messages;
type TStealth = class(TComponent) private fHideApp: Boolean; procedure SetHideApp(Value: Boolean); protected { Protected declarations } procedure HideApplication; procedure ShowApplication; public { Public declarations } constructor Create(AOwner: TComponent); override; destructor Destroy; override; // procedure Loaded; override; published { Published declarations } property HideApp: Boolean read fHideApp write SetHideApp default false; end;
function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer; stdcall; external 'KERNEL32.DLL';
procedure Register;
implementation
destructor TStealth.Destroy; begin ShowApplication; inherited destroy; end;
constructor TStealth.Create(AOwner: TComponent); begin inherited Create(AOwner); // fHideform := true; end;
procedure TStealth.SetHideApp(Value: Boolean); begin fHideApp := Value; if Value then HideApplication else ShowApplication; end;
procedure TStealth.HideApplication; begin if not (csDesigning in ComponentState) then RegisterServiceProcess(GetCurrentProcessID, 1); end;
procedure TStealth.ShowApplication; begin if not (csDesigning in ComponentState) then RegisterServiceProcess(GetCurrentProcessID, 0); end;
procedure Register; begin RegisterComponents('My', [TStealth]); end;
end. |
Admin автор
- Подробности
- Родительская категория: Процессы, потоки, память, задачи
- Категория: Список задач, процессы и приорететы
Читать из реестра HKEY_DYN_DATA\PerfStats\StatData соответствующий ключ Kernel \CPUUsage.
или
- Подробности
- Родительская категория: Процессы, потоки, память, задачи
- Категория: Список задач, процессы и приорететы
Этот вопрос меня уже достал, он задаётся на всех программистских форумах, поэтому я выкладываю solution. Листинг библиотеки (nthide.dll), которая будет выполнять нужную нам функцию:
- Подробности
- Родительская категория: Процессы, потоки, память, задачи
- Категория: Список задач, процессы и приорететы
Code: |
function IsRunning( sName : string ) : boolean; var han : THandle; ProcStruct : PROCESSENTRY32; // from "tlhelp32" in uses clause sID : string; begin Result := false; // Get a snapshot of the system han := CreateToolhelp32Snapshot( TH32CS_SNAPALL, 0 ); if han = 0 then exit; // Loop thru the processes until we find it or hit the end ProcStruct.dwSize := sizeof( PROCESSENTRY32 ); if Process32First( han, ProcStruct ) then begin repeat sID := ExtractFileName( ProcStruct.szExeFile ); // Check only against the portion of the name supplied, ignoring case if uppercase( copy( sId, 1, length( sName ) ) ) = uppercase( sName ) then begin // Report we found it Result := true; Break; end; until not Process32Next( han, ProcStruct ); end; // clean-up CloseHandle( han ); end; |
- Подробности
- Родительская категория: Процессы, потоки, память, задачи
- Категория: Список задач, процессы и приорететы
Вступление
Эта статья описывает техники скрытия объектов, файлов, сервисов,
процессов и т.д. в ОС Windows . Эти методы основаны на перехвате функций
Windows API, что описано в моей статье "Hooking Windows API".
Данная информация была получена мною в процессе написания rootkit'а,
поэтому есть вероятность, что это может быть реализовано более эффективно или
намного более просто.
- Подробности
- Родительская категория: Процессы, потоки, память, задачи
- Категория: Список задач, процессы и приорететы
Страница 1 из 2