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

Вниз

Что значит the default directory в параметрах функции?   Найти похожие ветки 

 
Matolch ©   (2002-12-12 13:06) [0]

HINSTANCE FindExecutable(

LPCTSTR lpFile, // pointer to string for filename
LPCTSTR lpDirectory, // pointer to string for default directory
LPTSTR lpResult // pointer to buffer for string for executable file on return
);

lpDirectory
Pointer to a null-terminated string specifying the default directory.


 
Игорь Шевченко ©   (2002-12-12 13:38) [1]

Надо понимать, тот каталог, откуда начинать поиск Executable...


 
Matolch ©   (2002-12-12 13:42) [2]

Так я понимаю, э.. "C:\Program files\" ?


 
Anatoly Podgoretsky ©   (2002-12-12 13:47) [3]

Можно, но может быть лучше "C:\" а то вдруг там, нет, а например в c:\Windows или вообще такой папки нет.


 
Matolch ©   (2002-12-12 13:49) [4]

Пытаюсь сделать таким образом:

FName := PChar(FileName);
FDir := PChar("C:\Program Files\"); //как только не пробовал
FindExecutable(FName, FDir, ResPChar);

После чего вижу Access Violation .. .. in "Shell32". В чем здесь может быть проблема, не пойму никак.


 
Matolch ©   (2002-12-12 13:52) [5]

Дак я и "C:\" пробовал, не здесь её закопали, наверное.


 
app ©   (2002-12-12 13:56) [6]

FindExecutable(FName, "c:\,


 
Matolch ©   (2002-12-12 13:59) [7]


> app ©

Что это значит, по твоему?


 
Matolch ©   (2002-12-12 14:03) [8]

Орешник: э.. "как "кликнуть" мышко?!" - это круто. Хочу свой вопрос там же.


 
Matolch ©   (2002-12-12 14:16) [9]

А в ответ - тишина. Люди, скажите, чего я не так сделал?


 
Игорь Шевченко ©   (2002-12-12 14:16) [10]


> FName := PChar(FileName);
> FDir := PChar("C:\Program Files\"); //как только не пробовал
> FindExecutable(FName, FDir, ResPChar);


ResPChar как объявлен и какие действия с ним произведены до вызова функции ?


 
Matolch ©   (2002-12-12 14:19) [11]

var
ResPChar: PChar;
begin
ResPChar := "";
и далее приведенный код


 
Matolch ©   (2002-12-12 14:24) [12]


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

Все понял: array [0..255] of char;

Спасибо огромное.


 
Anatoly Podgoretsky ©   (2002-12-12 14:27) [13]

Если ты понял про ResPChar, то надо ResPChar : array [0..MAX_PATH] of char;


 
Matolch ©   (2002-12-12 14:40) [14]

Ясно, 260, но почему так?


 
Anatoly Podgoretsky ©   (2002-12-12 14:46) [15]

Нет не 260, а именно MAX_PATH, оно меняется со временем


 
Matolch ©   (2002-12-12 14:52) [16]

MAX_PATH. Это понятно, но почему меняется.
А есть еще такой вопрос: вот я вытащил иконку при помощи

ExtractIconEx(ResPChar, 0, HL, HS, 1);

Из IconInfo получаю два HBITMAP:

BColor.Handle := IconInfo.hbmColor;
BMask.Handle := IconInfo.hbmMask;

Как-то можно слить их в один, чтобы получить полноценный вид?


 
Matolch ©   (2002-12-12 14:52) [17]

MAX_PATH.
А есть еще такой вопрос: вот я вытащил иконку при помощи

ExtractIconEx(ResPChar, 0, HL, HS, 1);

Из IconInfo получаю два HBITMAP:

BColor.Handle := IconInfo.hbmColor;
BMask.Handle := IconInfo.hbmMask;

Как-то можно слить их в один, чтобы получить полноценный вид?


 
app ©   (2002-12-12 15:00) [18]

было 66, затем 144, затем 260, сейчас идет речь об 1024
Использование константы позволяет избежать проблем
А меняется потому, что меняется файловая система


 
Matolch ©   (2002-12-12 15:01) [19]

А ещё, MAX_PATH объявлен как константа, есть ли повод утверждать, что приложение получит информацию о том, что для Windows эта константа уже не 260, а 275, или это действительно только для компилятора?


 
Игорь Шевченко ©   (2002-12-12 15:06) [20]

Matolch © (12.12.02 15:01)

Только для компилятора. А приложение может узнать, сказав SizeOf.

Про икону - можно нарисовать оба этих битмапа в memory device context (BitBlt с соответствующими растровыми операциями) и получится полноценный вид иконы.



 
Matolch ©   (2002-12-12 15:13) [21]


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

Так я понял, его ещё надо заставить это сделать & SizeOf(чего?)


 
Matolch ©   (2002-12-12 15:13) [22]


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

Так я понял, его ещё надо заставить это сделать & SizeOf(чего?).
BitBlt будем пробовать.


 
Игорь Шевченко ©   (2002-12-12 16:44) [23]


var
A : array[0..MAX_PATH] of char;

...
I := sizeof(A); { Получишь значение константы MAX_PATH + 1 }


 
Cobalt ©   (2002-12-13 00:47) [24]

Интересно, нет ли у Виндов такой недокументированной функции: unsigned int GetMax_Path(); ?


 
Matolch ©   (2002-12-13 09:13) [25]

Интересно.


 
Игорь Шевченко ©   (2002-12-13 09:35) [26]

Есть.

function YourEyes (const FileName, Value : String) : Integer;
begin
OpenFile(FileName);
Result := LookForDesiredValue(Value);
end;

Использование:
MaxPath := YourEyes("windows.pas", "MAX_PATH");



 
Cobalt ©   (2002-12-13 13:10) [27]

2 Игорь Шевченко © (13.12.02 09:35)
Я ведь не о том. Вы (кажется, или может, кто-то другой) упоминали о том, что эта символическая константа может быть разной для разных ОСей.
Мда, Линукс в этом отношении рулит - можно откомпилить исходники с учетом текущего значения...


 
Игорь Шевченко ©   (2002-12-13 13:30) [28]

Cobalt © (13.12.02 13:10)

????

А что, в заголовочных файлах объявлено не текущее значение ?


> Линукс в этом отношении рулит

Да нехай себе рулит...


 
Access Violation ©   (2002-12-14 06:52) [29]


> Игорь Шевченко © (13.12.02 09:35)

Круто я вас подловил!!!
OpenFile - недостаточно параметров
LookForDesiredValue - нет такой функции



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

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

Наверх




Память: 0.53 MB
Время: 0.021 c
3-96544
Andrey V.
2003-01-15 08:03
2003.01.30
ВОпрос по ЗАпросу


14-97038
Вадим
2003-01-13 02:13
2003.01.30
Кино


4-97109
Роман_
2002-12-14 19:47
2003.01.30
Как правильно передать параметр в thread


3-96553
Samael6
2003-01-11 13:48
2003.01.30
Перенос программы на другой компьютер


3-96568
Kilo
2003-01-11 18:30
2003.01.30
Вместо ноля выводится 1,4210854715202E-14