Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.15;
Скачать: CL | DM;

Вниз

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

 
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 вся ветка

Текущий архив: 2006.10.15;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.043 c
2-1159266563
syte_ser78
2006-09-26 14:29
2006.10.15
отладка выборочных юнитов


15-1159045854
Ketmar
2006-09-24 01:10
2006.10.15
устал...


2-1158753837
Darkwing
2006-09-20 16:03
2006.10.15
TIBQuery. Как сделать поиск (select, like) нечувствительным


4-1147513821
parovoZZ
2006-05-13 13:50
2006.10.15
Криво работает окно в dll при вызове из VCL exe


15-1158853641
hamster
2006-09-21 19:47
2006.10.15
Где винт???





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский