Главная страница
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.023 c
4-84830
Anonimus
2003-04-24 12:22
2003.06.26
Обработка событий от мыши..


3-84022
Александр Николаевич
2003-05-30 12:50
2003.06.26
UPDATE НА БОЛЬШОЙ ОБЪЕМ ДАННЫХ В INTERBASE


3-83854
KIR
2003-05-29 10:28
2003.06.26
Перенос данных из одной БД в аналогичную (IB)


1-84155
REA
2003-06-11 10:20
2003.06.26
Как сохранить список


11-84062
Vit@l
2002-09-26 21:20
2003.06.26
Создание компонента для KOL