Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.08.28;
Скачать: [xml.tar.bz2];

Вниз

Как вытащить иконку из открытого окна ???????   Найти похожие ветки 

 
Arhelon   (2003-06-24 14:46) [0]

GetClassLong(wnd,GCL_HICON) не всегда помогает :(
Не вытаскивается из аськи и Оперы :((
Как ещё мона ????


 
Игорь Шевченко   (2003-06-24 15:26) [1]

Еще можно

var AIconSm : HICON;
begin
AIconSm := GetClassLong(AWindowHandle, GCL_HICONSM);
if AIconSm = 0 then
( AWindowHandle, WM_GETICON, ICON_SMALL, 0, SMTO_NORMAL, 300, AIconSm) Еще можно

var AIconSm : HICON;
begin
AIconSm := GetClassLong(AWindowHandle, GCL_HICONSM);
if AIconSm = 0 then
if SendMessageTimeOut(AWindowHandle, WM_GETICON, ICON_SMALL, 0, SMTO_NORMAL, 300, AIconSm) = 0 then
AIconSm := 0;
...
end;


 
Arhelon   (2003-06-24 15:59) [2]

Types of actual and formal var parameters must be identical :(


 
Игорь Шевченко   (2003-06-24 16:29) [3]

1) Они Identical :) Компилировалось на D6, работало в WinXP. Пример полгода лежал в кладовке и умер при очередной аварии.
2) На какой строке-то хоть сообщение выдается ?


 
clickmaker   (2003-06-24 16:34) [4]

SendMessageTimeOut(AWindowHandle, WM_GETICON, ICON_SMALL, 0, SMTO_NORMAL, 300, Cardinal(AIconSm))


 
Игорь Шевченко   (2003-06-24 16:40) [5]

clickmaker © (24.06.03 16:34)

Я сильно извиняюсь, но какую гайку надо установить в компиляторе, чтобы получить такое сообщение и избавится от него, приведением типа к Cardinal ???


 
clickmaker   (2003-06-24 16:49) [6]

Странно как раз то, что у вас, Игорь, дельфя не заругалась :)
Так что вопрос про гайку переадресую обратно вам: как сделать, чтоб не ругалась?
Тип HICON, он хоть и обозначен как LongWord, но по мнению компилятора не идентичен DWORD"у, отсюда и матюги


 
Игорь Шевченко   (2003-06-24 17:04) [7]

clickmaker © (24.06.03 16:49)

D5 не ругается сейчас :)
D6 Personal - не ругалась при разработке :)

С уважением,


 
Игорь Шевченко   (2003-06-24 17:06) [8]

procedure TfMain.DesktopWindowsListBoxDrawItem(Control: TWinControl;
Index: Integer; Rect: TRect; State: TOwnerDrawState);
var
AWindowHandle : HWND;
AIconSM : THandle;
Icon : TIcon;
begin
with DesktopWindowsListBox do begin
Canvas.FillRect(Rect);
AWindowHandle := HWND(Items.Objects[Index]);
if AWindowHandle = HWND(-2) then begin
Canvas.Font.Color := clRed;
Canvas.Brush.Color := Color;
end else begin
Inc(Rect.Left, 2);
AIconSm := GetClassLong(AWindowHandle, GCL_HICONSM);
if AIconSm = 0 then
if SendMessageTimeOut(AWindowHandle, WM_GETICON, ICON_SMALL, 0, SMTO_NORMAL, 300, AIconSm) = 0 then
AIconSm := 0;
if AIconSm <> 0 then begin
Icon := TIcon.Create();
Icon.Handle := AIconSm;
try
Canvas.Draw(Rect.Left, Rect.Top+2,Icon);
Icon.ReleaseHandle();
finally
Icon.Free();
end;
end;
Inc (Rect.Left, GetSystemMetrics(SM_CXSMICON)+3);
end;
( Canvas.Handle, PChar(Items[Index])
procedure TfMain.DesktopWindowsListBoxDrawItem(Control: TWinControl;
Index: Integer; Rect: TRect; State: TOwnerDrawState);
var
AWindowHandle : HWND;
AIconSM : THandle;
Icon : TIcon;
begin
with DesktopWindowsListBox do begin
Canvas.FillRect(Rect);
AWindowHandle := HWND(Items.Objects[Index]);
if AWindowHandle = HWND(-2) then begin
Canvas.Font.Color := clRed;
Canvas.Brush.Color := Color;
end else begin
Inc(Rect.Left, 2);
AIconSm := GetClassLong(AWindowHandle, GCL_HICONSM);
if AIconSm = 0 then
if SendMessageTimeOut(AWindowHandle, WM_GETICON, ICON_SMALL, 0, SMTO_NORMAL, 300, AIconSm) = 0 then
AIconSm := 0;
if AIconSm <> 0 then begin
Icon := TIcon.Create();
Icon.Handle := AIconSm;
try
Canvas.Draw(Rect.Left, Rect.Top+2,Icon);
Icon.ReleaseHandle();
finally
Icon.Free();
end;
end;
Inc (Rect.Left, GetSystemMetrics(SM_CXSMICON)+3);
end;
DrawText(Canvas.Handle, PChar(Items[Index]), -1, Rect, DT_SINGLELINE OR DT_VCENTER);
end;
end;


Вот такой вот код :)


 
clickmaker   (2003-06-24 17:17) [9]

Чудеса на виражах...
У меня и 5 и 6 ругается на эту строчку.
Причем, если сменить тип AIconSm c HICON на THandle, то ошибка еще экзотичней:
Statement expected, but expression of type "Integer" found

Игорь, а вы на каком рынке Дельфи брали ? :)))


 
Игорь Шевченко   (2003-06-24 18:17) [10]

clickmaker © (24.06.03 17:17)

У Borland"a обе. D5 на работе, D6 личная, благо бесплатная, все update packs установлены.


 
DVM   (2003-06-25 12:14) [11]

function GetIconFromWindow(hWnd:HWND; bBigIcon:boolean):HICON;
var
BigOrSmall,BigOrSmall2:integer;
hIcon:THandle;
begin
hIcon:=0;
if bBigIcon then
begin
BigOrSmall:=ICON_BIG;
BigOrSmall2:=GCL_HICON;
end
else
begin
BigOrSmall:=ICON_SMALL;
BigOrSmall2:=GCL_HICONSM;
end;
SendMessageTimeout(hWnd, WM_GETICON, BigOrSmall, 0, SMTO_ABORTIFHUNG, 1000, HIcon);
if hIcon=0 then hIcon := GetClassLong(hWnd, BigOrSmall2);
if hIcon=0 then SendMessageTimeout(hWnd, WM_GETICON, BigOrSmall, 1,
( hWnd, BigOrSmall2) function GetIconFromWindow(hWnd:HWND; bBigIcon:boolean):HICON;
var
BigOrSmall,BigOrSmall2:integer;
hIcon:THandle;
begin
hIcon:=0;
if bBigIcon then
begin
BigOrSmall:=ICON_BIG;
BigOrSmall2:=GCL_HICON;
end
else
begin
BigOrSmall:=ICON_SMALL;
BigOrSmall2:=GCL_HICONSM;
end;
SendMessageTimeout(hWnd, WM_GETICON, BigOrSmall, 0, SMTO_ABORTIFHUNG, 1000, HIcon);
if hIcon=0 then hIcon := GetClassLong(hWnd, BigOrSmall2);
if hIcon=0 then SendMessageTimeout(hWnd, WM_GETICON, BigOrSmall, 1,
SMTO_ABORTIFHUNG, 1000, hIcon);
if hIcon=0 then hIcon := GetClassLong(hWnd, BigOrSmall2);
if hIcon=0 then SendMessageTimeout(hWnd, WM_QUERYDRAGICON, BigOrSmall,
0, SMTO_ABORTIFHUNG, 1000, hIcon);
result:=hIcon;
end; // End of function GetIconFromWindow --------------------------------------


 
jonni   (2003-06-25 23:45) [12]

nado dobavit" k DMV esche strochku!!!!!!! v samiy konec vseh pereborov

if hIcon=0 then hIcon:=LoadIcon(0,IDI_APPLICATION);

//----------
IDI_APPLICATION---- vot eto po vkusu
//----------
budet togda voobcshe na vse sluchai zizni
toka s razmerami kak bit.....:)



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

Форум: "WinAPI";
Текущий архив: 2003.08.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
6-92154
RichY
2003-06-19 14:25
2003.08.28
IP


14-92190
Def
2003-08-06 16:24
2003.08.28
Пошлый вопрос про UnZip


7-92276
Sergey
2003-06-03 13:52
2003.08.28
USB


4-92318
Acidy
2003-06-26 15:34
2003.08.28
Виндовые иконки ...


7-92277
_Al
2003-06-11 15:35
2003.08.28
RAR, работа с файлами архивов





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский