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

Вниз

Диалог смены иконки   Найти похожие ветки 

 
Эстонец   (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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.039 c
1-84133
Frist_May
2003-06-11 09:14
2003.06.26
ComboBox + F4


9-83833
Argonaut
2003-01-13 17:56
2003.06.26
Управление мышью


14-84560
Начинающий шароварщик
2003-05-28 16:55
2003.06.26
Shareware - за и против


1-84224
Тих
2003-06-12 23:15
2003.06.26
ФОрматирование даты


3-83855
Ann
2003-05-29 10:25
2003.06.26
grid