Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2006.10.15;
Скачать: [xml.tar.bz2];

Вниз

как узнать полный путь   Найти похожие ветки 

 
serguar   (2006-06-01 10:42) [0]

Здравствуйте.
Подскажите как из моего приложения определить полный путь к чужему запущеному приложению. Далаю так:

function GetMyFullPath: String;
var
 Wnd: HWnd;
 WinInstance: THandle;
 ModuleName: array[0..MAX_PATH - 1] of Char;
begin
 Result := "";
 Wnd := FindWindow(PChar("AppClassName"), nil);
 if Wnd <> 0 then begin
   WinInstance := GetWindowLong(Wnd, GWL_HINSTANCE);
   if GetModuleFileName(WinInstance, ModuleName, Length(ModuleName)) > 0 then
     Result := StrPAs(ModuleName);
 end;
end;

функция GetModuleFileName() возвращает ноль.
Че делать?


 
Игорь Шевченко ©   (2006-06-01 10:54) [1]

http://www.schevchenko.net.ru/SRC/EnumFunctions_60.zip


 
serguar   (2006-06-01 14:51) [2]

Спасибо. Попробовал. Вот результат:

System Error. Code: 299
Запрос ReadProcessMemory или WriteProcessMemory был выполнен только частично.

Вылетает на втором вызове ReadProcessMemory()

У меня только на Winamp не ругается... :)


 
Игорь Шевченко ©   (2006-06-01 15:39) [3]

serguar   (01.06.06 14:51) [2]

XP SP2 или Windows 2003 ? Тогда увы.


 
BiN ©   (2006-06-01 16:00) [4]

а чем  GetModuleFileNameEx или GetProcessImageFileName не устраивают?


 
serguar   (2006-06-01 16:02) [5]


> Игорь Шевченко


Вот именно, будем над этим работать...


 
serguar   (2006-06-01 16:06) [6]

Я вообще все это затеял для того что бы узнать путь к локальной БД на которую нет ни алиасов ни чего другого в реестре. Просто база лежит в том же каталоге что и исполняемый файл, который ее заполняет. Может есть какие нибудь другие предложения. Путь нужен для динамического формирования свойства ADOConnection.ConnectionString.


 
umbra ©   (2006-06-01 16:37) [7]


> Просто база лежит в том же каталоге что и исполняемый файл,
>  который ее заполняет

ExtractFilePath(Application.ExeName) + basename


 
tesseract ©   (2006-06-01 16:45) [8]


> ExtractFilePath(Application.ExeName) + basename

Это вроде для своего, а ему для чужого надо.


 
umbra ©   (2006-06-01 16:47) [9]

2 tesseract ©   (01.06.06 16:45) [8]

да, вспылил я :\
читал невнимательно


 
DVM ©   (2006-06-01 17:01) [10]

uses   Tlhelp32, PSAPI;

function _GetProcessFileNameByWindowHandle(Wnd: HWND): string;
var
 hProcess: THandle;
 PID: Cardinal;
 FileName: array [1..MAX_PATH] of char;
 PE: TProcessEntry32;
 Snap: Cardinal;
 OsVerInfo: TOSVersionInfo;
begin
 Result := "";
 GetWindowThreadProcessId(Wnd, @PID);
 hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, false, PID);
 OsVerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
 if GetVersionEx(osVerInfo) then
   begin
     if OsVerInfo.dwPlatformId = VER_PLATFORM_WIN32_NT then
       begin
         ZeroMemory(@Filename[1], SizeOf(Filename));
         GetModuleFileNameEx(hProcess, 0, @Filename[1], SizeOf(Filename));
         Result := FileName;
       end
     else
       begin
         Snap := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
         if Snap <> -1 then
           begin
             PE.dwSize:=SizeOf(PE);
             if Process32First(Snap, PE) then
               repeat
                 if PE.th32ProcessID = PID then Result := PE.szExeFile;
               until not Process32Next(Snap, PE);
           end;
       end;
   end;
 CloseHandle(hProcess);
end;


 
serguar   (2006-06-01 19:35) [11]


> DVM

Спасибо большое! Все получилось.



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2006.10.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.041 c
2-1159277739
Inna_Z
2006-09-26 17:35
2006.10.15
События MouseDown и MouseUp.


1-1157551934
Krants
2006-09-06 18:12
2006.10.15
"Freeze Panes" Exel


15-1158737001
pasha_golub
2006-09-20 11:23
2006.10.15
Вакансии в Москве


3-1155843393
Wiedzmin
2006-08-17 23:36
2006.10.15
Проблема сохранения данных


15-1157534717
Stexen
2006-09-06 13:25
2006.10.15
Turbo delphi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский