Форум: "Основная";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];
ВнизДиалог смены иконки Найти похожие ветки
← →
Эстонец (2003-06-09 18:37) [0]Нижеприведённый код работает в Win 98 но не работает в Win XP. При вызове функции SHChangeIcon под XP. Вылетает ошибка "File not found." Кроме того не возвращаеться имя выбранного в диалоге файла. Может я что напутал?
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
function SHChangeIcon(Wnd : HWND;
szFileName : PChar;
Reserved : Integer;
Var lpIconIndex : Integer
): DWORD; stdcall;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
Var Temp: PChar;
Num : Integer;
begin
Temp := StrAlloc(256);
SHChangeIcon(Handle, Temp, 0, Num);
Edit1.Text := Temp + "," + IntToStr(Num);
end;
Function SHChangeIcon; External "shell32.dll" Index 62;
end.
← →
clickmaker (2003-06-09 18:41) [1]А откуда взято описание ф-ии? Может в ХР там что-то поменялось в параметрах
← →
Эстонец (2003-06-09 23:58) [2]Описание функции взято из кода компонента который я скачал с torry.net. Правда этот компонент не работал :(
← →
Babay (2003-06-10 08:03) [3]у меня в модуле описано так (давно нашел где точно не помню)
и все работает под ХР под 98 правда не проверял, не пишу под 98.
Function ChangeIconDialog (hOwner:LongInt;Filename: String;Var IconIndex:LongInt):LongInt;
{Вызывает диалог выбора иконки (как при смене значка на десктопе)
Параметры
hOwner - хэндл владельца
FileName - полный путь к файлу с иконками (должен существовать)
если в указанном файле нет иконок, вызывается файл Shell32.dll.
IconIndex возвращает номер иконки в файле
результат работы функции 1 если нажата кнопка выбора и 0 если отмена
Далее иконку можно вытащить с помощью xtractIconEx.
}
implementation
// подключаемые из DLL
Function SHChangeIconDialog (hOwner:LongInt;sFilename: LPWSTR;nBuf:LongInt;var nIconIndex:LongInt):LongInt;
stdCall; External "Shell32.dll" index 62;
Function ChangeIconDialog (hOwner:LongInt;Filename: String;Var IconIndex:LongInt):LongInt;
VAr nFileName:LPWSTR;
FNLen:Integer;
i:LongInt;
begin
FNLen:=Length(FileName)+1;
nFileName := CoTaskMemAlloc(FnLen * sizeof(WideChar));
StringToWideChar( FileName, nFileName, FnLen);
if FileName="" then nFileName:=Nil;
Result:=SHChangeIconDialog(hOwner,nFileName,0,IconIndex);
CoTaskMemFree(nFileName);
end;
в проге
procedure TForm1.BitBtn1Click(Sender: TObject);
Var i:Integer;
begin
ChangeIconDialog(handle,"Shell32.dll",i);
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.028 c