Добро пожаловать, гость ( Вход | Регистрация )
| -=CHE@TER=- |
Jan 5 2007, 00:35
Сообщение
#1
|
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,402 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 325 раз(а) |
Delphi programs in API.
На английском. Очень подробно всё описано, плюс есть исходные коды готовых юнитов. Например SmallUtil, в котором есть все частоиспользуемые подпрограммы, и который в размере меньше, чем SysUtils (автор так утверждает - я не проверял). |
![]() ![]() |
| -=CHE@TER=- |
Oct 13 2008, 10:55
Сообщение
#2
|
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,402 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 325 раз(а) |
Вот код тру перезапускалки:
CODE Program WHungApp; Uses Windows; Function IsHungAppWindow(Wnd: hWnd): BOOL; stdcall; external 'user32.dll' name 'IsHungAppWindow'; Function GetModuleFileNameEx(hProcess: THandle; hModule: HMODULE; lpFilename: PAnsiChar; nSize: DWORD): DWORD; stdcall; external 'psapi.dll' name 'GetModuleFileNameExA'; Function NtQueryInformationProcess(ProcessHandle: THandle; ProcessInformationClass: Byte; ProcessInformation: Pointer; ProcessInformationLength: ULONG; ReturnLength: PULONG): DWORD; stdcall; external 'ntdll.dll' name 'NtQueryInformationProcess'; // Как по PID процесса узнать CMDLINE?, то есть, командную строку? // http://forum.sources.ru/index.php?showtopic=136611 // http://undocumented.ntinternals.net/ // http://forum.sources.ru/index.php?showtopic=243663 Type UNICODE_STRING = Packed Record Length : Word; MaximumLength: Word; Buffer : PWideString; end; PROCESS_BASIC_INFORMATION = Packed Record ExitStatus : DWORD; PebBaseAddress: DWORD; // PPEB AffinityMask : DWORD; BasePriority : DWORD; uUniqueProcessId: ULong; uInheritedFromUniqueProcessId: ULong; End; Function GetProcessCmdLine(hProcess: THandle): String; Var PBI: PROCESS_BASIC_INFORMATION; pp, cb: DWORD; ws: WideString; uz: UNICODE_STRING; Begin Result:=''; If (NtQueryInformationProcess(hProcess, 0{ProcessBasicInformation}, @PBI, SizeOf(PROCESS_BASIC_INFORMATION), @cb) = 0) Then Begin If ReadProcessMemory(hProcess, Ptr(PBI.PebBaseAddress+16), @pp, 4, cb) Then If ReadProcessMemory(hProcess, Ptr(pp+64), @uz, SizeOf(UNICODE_STRING), cb) Then Begin SetLength(ws, uz.Length Div 2); If ReadProcessMemory(hProcess, uz.Buffer, PWideChar(ws), uz.Length, cb) Then Result:=AnsiString(ws); End; End; End; Procedure WriteLog(S: String); Var Fl: THandle; dw: DWORD; Begin Fl:=CreateFile(PChar(ParamStr(0)+'.log'), GENERIC_WRITE Or GENERIC_READ, 0, Nil, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); If Fl <> INVALID_HANDLE_VALUE Then Begin SetFilePointer(Fl, 0, Nil, FILE_END); WriteFile(Fl, S[1], Length(S), dw, Nil); CloseHandle(Fl); End; End; Function GetDateTime: String; Begin SetLength(result, 19); GetDateFormat(LOCALE_SYSTEM_DEFAULT, 0, Nil, 'yyyy.MM.dd', @result[1], 10); GetTimeFormat(LOCALE_SYSTEM_DEFAULT, 0, Nil, 'HH:mm:ss', @result[12], 8); result[11]:=#32; End; Function EnumWindowsProc(Wnd: hWnd; lparam: LPARAM): BOOL; stdcall; Var pid: DWORD; ph: THandle; S, C: String; PInfo: TProcessInformation; SInfo: TStartupInfo; Begin If IsHungAppWindow(Wnd) Then Begin GetWindowThreadProcessId(Wnd, @pid); ph:=OpenProcess(PROCESS_ALL_ACCESS, False, pid); If ph<>0 Then Begin SetLength(S, MAX_PATH); SetLength(S, GetModuleFileNameEx(ph, 0, @S[1], MAX_PATH)); C:=GetProcessCmdLine(ph); If Pos('"', C)<>0 Then Begin C[1]:='_'; Delete(C, 1, Pos('"', C)+1); End Else Begin If Pos(' ', C)<>0 Then Delete(C, 1, Pos(' ', C)+1); End; S:='"'+S+'" '+C; WriteLog(GetDateTime+#32+S+#13#10); // terminate process TerminateProcess(ph, 0); CloseHandle(ph); // restart process FillChar(SInfo, SizeOf(SInfo), 0); SInfo.cb:=SizeOf(SInfo); CreateProcess(Nil, PChar(S), Nil, Nil, False, 0, Nil, Nil, SInfo, PInfo); CloseHandle(PInfo.hThread); CloseHandle(PInfo.hProcess); End; End; Result:=True; End; Begin EnumWindows(@EnumWindowsProc, 0); End. |
-=CHE@TER=- Delphi, Asm, C, WinAPI, PHP, ... Jan 5 2007, 00:35
Siberian GRemlin Может не в тему, но не решился создавать новую тем... Jul 5 2007, 16:36
-=CHE@TER=- Может не в тему, но не решился создавать новую тем... Jul 5 2007, 16:44
-=CHE@TER=- Вопрос - кто знает, как по MUTEX'у процесса по... Jul 7 2007, 16:37
jTommy Вопрос - кто знает, как по MUTEX'у процесса по... Jul 8 2007, 16:01
-=CHE@TER=- Если я правильно понял ситуация такая: загружена т... Jul 9 2007, 12:10
jTommy Нет, всё гораздо хуже - программа при загрузке ком... Jul 9 2007, 20:09
-=CHE@TER=- Нет, всё гораздо хуже - программа при загрузке ком... Aug 22 2014, 11:14
Xplorer Handle'у процесса посылал WM_CLOSE - без толку... Jul 10 2007, 09:44
-=CHE@TER=- Бардак на корабле! © Попугай из Пиратов Карибс... Jul 10 2007, 12:51
Xplorer Я изменил код.
А вот, кстати, интересный тогда вп... Jul 10 2007, 13:54
-=CHE@TER=- Я изменил код.
Смотри в коде.Хе-хе, ты своё сообщ... Jul 10 2007, 22:04
-=CHE@TER=- Думаю, тут будет полезно приводить некоторые полез... Jul 16 2007, 16:40
Siberian GRemlin Извиняюсь, если не в тему (вроде это WinAPI). Хоте... Jul 19 2007, 09:14
-=CHE@TER=- Извиняюсь, если не в тему (вроде это WinAP). Хотел... Jul 19 2007, 13:51
-=CHE@TER=- А теперь моя очередь задавать вопрос. (*улыбается*... Jul 20 2007, 01:30
Xplorer Для 2000/XP/2003/Vista - RasGetConnectionStatistic... Jul 20 2007, 06:08
-=CHE@TER=- Xplorer!
RasGetConnectionStatistics - это как ... Jul 20 2007, 13:48
-=CHE@TER=- [b]Xplorer!
RasGetConnectionStatistics - это к... Jul 21 2010, 16:00
-=CHE@TER=- Переименовал тему - теперь тут можете обсуждать чт... Jul 23 2007, 19:01
-=CHE@TER=- Кстати, насчёт ReadKey / KeyPressed - вот, неплоха... Aug 11 2007, 13:54
-=CHE@TER=- Вопрос ко всем - возможно ли при помощи класса TFi... Apr 7 2008, 17:03
Xplorer S := TFileStream.Create('x.x', fmO... Apr 8 2008, 19:30
-=CHE@TER=- Xplorer!
Ой, спасибо большое!
Что-то я сто... Apr 9 2008, 10:09
-=CHE@TER=- Ещё пара глупых вопросов:
1. В Си можно сделать т... Jun 8 2008, 11:49
Grom PE -=CHE@TER=-, вопросы нормальные =)
1. Если я прав... Jun 8 2008, 12:28
-=CHE@TER=- Grom PE!
Спасибо большое, только создавать ещё... Jun 8 2008, 17:59
-=CHE@TER=- Небольшая программка для перезапуска зависших прил... Oct 12 2008, 19:56
-=CHE@TER=- Вопрос: кто-нибудь знает как получить ключи команд... Oct 13 2008, 08:16
-=CHE@TER=- PHP 5.2.1 + IIS 6
PHP has encountered an Access V... Oct 18 2008, 11:15
-=CHE@TER=- Очередная херня - столько времени убил, пока нагуг... Oct 31 2008, 15:54
-=CHE@TER=- Есть на форме UpDown1, ассоциированный (Associate)... Nov 15 2008, 07:32
Grom PE -=CHE@TER=-,
у меня с чистым созданным проектом вс... Nov 15 2008, 12:58
-=CHE@TER=- Еще попробуй перезапустить Delphi.Как оно всё оказ... Nov 15 2008, 13:08
-=CHE@TER=- Вопрос сложный, но может кто-то знает в чём прикол... Dec 18 2008, 18:26
-=CHE@TER=- Делал тут как-то плеер. И решил сделать для него в... Jan 2 2009, 19:53
-=CHE@TER=- Кто-нибудь знает, как можно проверить сокет на дох... Jun 25 2009, 04:10
-=CHE@TER=- Однако! Первая строчка с получением 0 байт у м... Dec 5 2009, 16:36
Siberian GRemlin Обычно указывается драйвер вызвавший эту ошибку. Е... Jun 25 2009, 06:22
-=CHE@TER=- Обычно указывается драйвер вызвавший эту ошибку. Е... Jun 25 2009, 11:56
Siberian GRemlin Полезную статейку нашёл. Даже если ошибка на чужом... Nov 2 2009, 10:11
-=CHE@TER=- Товарищи, объясните мне кто-нибудь такой феномен:
... Jan 15 2010, 19:26
Grom PE -=CHE@TER=-
Ну дык, процессор так работает, x shr... Jan 16 2010, 07:46
-=CHE@TER=- Думаю, что это лучше здесь разместить, чем в ссылк... Jan 23 2010, 18:35
Siberian GRemlin Может не в тему, но есть ли готовый модуль\би... Feb 15 2010, 15:45
Axsis пара ссылок с первой страницы гугла:
http://www.de... Feb 15 2010, 16:10
-=CHE@TER=- Чтобы долго не писать чего да как - приведу [/cut]... Apr 22 2010, 10:05
-=CHE@TER=- Иногда бывает надо при распаковке игровых архивов ... Jun 1 2010, 17:46
-=CHE@TER=- Блин, ставил по работе на удалённый сайт Joomla - ... Jul 27 2010, 17:38
-=CHE@TER=- Вчерась ковырял одну игрушку, где данные были упак... Aug 10 2010, 14:27
-=CHE@TER=- Вчерась ковырял одну игрушку, где данные были упак... Mar 7 2012, 20:37
Siberian GRemlin Сегодня у меня был очередной сеанс мозгофилии.
При... Jan 7 2011, 15:20
-=CHE@TER=- 1) Либо Inno: AnsiString -> WideString; Delphi:... Jan 7 2011, 23:20
Siberian GRemlin Собственно, я и спрашивал как правильно перегнать ... Jan 8 2011, 10:49
-=CHE@TER=- Locale - это, грубо так говоря, язык установленный... Jan 8 2011, 12:35
-=CHE@TER=- Ковырял тут по просьбе CMS одну. Собственно, были ... Jan 9 2011, 16:01
Siberian GRemlin Не подскажите ка можно на JavaScript вставить (гип... Apr 14 2011, 16:49
-=CHE@TER=- Если тебе просто что-то надо вставить, а не файл, ... Apr 14 2011, 18:26
Siberian GRemlin Мне нужно было именно на JS или jQ, ибо для AJAX н... Apr 15 2011, 11:12
-=CHE@TER=- Поставил я тут новый colorer для FAR и моя тачка з... Jul 23 2011, 13:01
Siberian GRemlin Намедни столкнулся с тем что IE не понимает InnerH... Jul 28 2011, 03:05
-=CHE@TER=- У Delphi такой смешной оптимизатор (компилирую про... Nov 11 2011, 15:15
-=CHE@TER=- Siberian GRemlin!
До меня, кажется, дошло, по... Nov 14 2011, 13:41
-=CHE@TER=- У Delphi такой смешной оптимизатор (компилирую про... Mar 12 2012, 09:13
Siberian GRemlin для каждой строки писать String[кол-во_символов] =... Mar 12 2012, 11:07
Siberian GRemlin Как я понимаю при конкатенации (дурацкое слово) ст... Nov 11 2011, 15:25
-=CHE@TER=- Похоже долго ты на Java писал. (*улыбается*)
Нет,... Nov 11 2011, 20:39
-=CHE@TER=- Писал я недавно патч для включения крови в German ... Jan 14 2012, 13:26
Siberian GRemlin Кто-нибудь знает где можно взять готовый код под P... Mar 24 2012, 09:13
-=CHE@TER=- Вот тут (за номером 7 самый простой, и ниже - до к... Mar 24 2012, 11:58
-=CHE@TER=- В Си есть такая замечательная функция, как sprintf... Apr 14 2012, 15:39
-=CHE@TER=- И ещё о нескольких устаревших (по мнению MSDN, где... Apr 15 2012, 10:32
-=CHE@TER=- Проводя очередную чистку системы, натолкнулся на ф... Apr 19 2012, 13:23
Grom PE Сам у себя встречал такие файлы. Полюбопытствовал,... Apr 19 2012, 19:05
-=CHE@TER=- В очередной раз зайдя на сайт товарища Siberian GR... Apr 24 2012, 12:14
Siberian GRemlin Я так понимаю, ты знаешь способ создания динамичны... Apr 24 2012, 13:16
-=CHE@TER=- Я так понимаю, ты знаешь способ создания динамичны... Apr 24 2012, 15:37
Siberian GRemlin Месяц назад я только договорился с админом и мне в... Apr 24 2012, 15:49
-=CHE@TER=- О, блин, 4-ый PHP это уже здорово, чем вообще ниче... Apr 24 2012, 16:19
-=CHE@TER=- Нашёл в Delphi 7 охрененный косяк, который вынес м... May 30 2012, 10:22
-=CHE@TER=- Все, наверное, помнят, что в .BMP формате строки и... Sep 6 2012, 20:32
jTommy Ради интереса полез в свою "библию" - кн... Sep 8 2012, 20:52
-=CHE@TER=- Ты имеешь ввиду GFF?
Я нашёл там вот такое описани... Sep 9 2012, 12:43
jTommy Да, она самая, издание от 1997 года. Sep 9 2012, 21:25
-=CHE@TER=- Поделюсь двумя вещами.
1) Во-первых, в Delphi 7 к... Dec 15 2012, 09:29
-=CHE@TER=- Товарищи, у меня вопрос - может кто-нибудь помочь?... Apr 6 2013, 18:25
-=CHE@TER=- Нашёл вот такую штуку:
Это из исходных кодов ста... Apr 9 2013, 16:17
-=CHE@TER=- Исходные коды можно нагуглить, могу выложить, если... Apr 18 2013, 16:48
-=CHE@TER=- Я, походу, перестану скоро Delphi пользоваться, во... Apr 27 2013, 15:06
Siberian GRemlin Моя прога по работе использует TTimer и пока пробл... Apr 29 2013, 13:48
-=CHE@TER=- P. S. С получением текста помочь не могу, к сожале... Apr 30 2013, 11:40
-=CHE@TER=- Ну, ладно, пока никто с получением текста не помог... May 1 2013, 11:54
-=CHE@TER=- Сделал себе замечательный srvrun.bat для перезапус... Jun 6 2013, 17:11
Siberian GRemlin Возникла внезапная потребность использовать socks ... Jun 22 2013, 08:06
-=CHE@TER=- Мне не так давно было ещё одно откровение, которым... Jun 28 2013, 11:09
-=CHE@TER=- Часто пишу программы, которые со временем довольно... Sep 14 2013, 14:32
-=CHE@TER=- Пишу в последнее время на Си, так что недавно мне ... Nov 23 2013, 17:38
-=CHE@TER=- Недавно я тут писал про утилиту COMPRESS.EXE, сжим... Nov 27 2013, 15:42
-=CHE@TER=- Натолкнулся на то, что в нескольких играх использу... Feb 13 2014, 14:49![]() ![]() |
| Упрощённая версия | Сейчас: 7th December 2025 - 23:18 |