Главная страница
    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.042 c
15-1159297031
Cyrax
2006-09-26 22:57
2006.10.15
Как сбилдить проект в Eclipse


1-1155469218
nali
2006-08-13 15:40
2006.10.15
Вопрос по отладчику delphi6


15-1158903145
Ega23
2006-09-22 09:32
2006.10.15
С Днём рождения! 22 сентября


5-1141114827
Creative
2006-02-28 11:20
2006.10.15
ссылка на объект в строке StringGrid`а


2-1158566852
vodvorezlaya
2006-09-18 12:07
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский