Вверх ↑
Этот топик читают: Гость
Ответов: 70
Рейтинг: 1
#16: 2013-07-08 19:55:08 ЛС | профиль | цитата
Здраствуйте все!
Возникла потребность запуска диалога "Смена значка" в программе (http://savepic.org/3989701.png)
Вызывается этот диалог функцией PickIconDlg.
Если точнее, то rundll32 shell32,PickIconDlg (c:\windows\system32\shell32.dll, 1)
Ознакомился с принципами запуска на этом ресурсе http://msdn.microsoft.com/en-us/library/windows/desktop/bb776481(v=vs.85).aspx
Понимаю, что мой синтаксис запуска неверен, но я перепробовав комбинации уже и вдумываясь и наобум добиваюсь либо сообщения об ошибке, либо вообще при запуске функции банальной кнопочкой не происходит ничего.
code_31424.txt
По идее компонент WinExec должен выдавать полный путь к файлу значка (какой выберет юзер) и индекс иконки в файле. Насколько я понимаю данную функцию. Мне нужно получать эти два параметра. Честно боролся с утра с переменным успехом и прошу помощи, только когда все мною изученные методы не сработали. Помогите.
карма: 0

0
файлы: 1code_31424.txt [253B] [489]
Ответов: 196
Рейтинг: 43
#17: 2013-07-08 22:07:43 ЛС | профиль | цитата
MBTY, Держи. Выдаёт имя файла и индекс иконки.
Add(MainForm,2045502,56,203)
{
Width=380
Height=216
Position=1
}
Add(Button,5894916,259,203)
{
Left=120
Top=110
Width=90
Height=25
link(onClick,14786104:Icon,[])
}
Add(InlineCode,14786104,336,203)
{
WorkPoints=#4:Icon|
EventPoints=#10:onFilename|7:onIndex|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|29:uses kol,Share,Debug,Windows;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|24: onFilename:THI_Event;|21: onIndex:THI_Event;|47: procedure Icon(var _Data:TData; Index:word);|5: end;|0:|14:implementation|79:function ChangeIconDialog(hOwner: tHandle; var FileName: string; var IconIndex:|20: Integer): Boolean;|4:type|64: SHChangeIconProcW = function(Wnd: HWND; szFileName: PWideChar;|65: Reserved: Integer; var lpIconIndex: Integer): DWORD; stdcall;|5:const|26: Shell32 = 'shell32.dll';|3:var|23: ShellHandle: THandle;|35: SHChangeIconW: SHChangeIconProcW;|39: BufW: array[0..MAX_PATH] of WideChar;|5:begin|18: Result := False;|23: SHChangeIconW := nil;|53: ShellHandle := Windows.LoadLibrary(PChar(Shell32));|5: try|28: if ShellHandle <> 0 then|9: begin|63: SHChangeIconW := GetProcAddress(ShellHandle, PChar(62))|8: end;|0:|35: if Assigned(SHChangeIconW) then|9: begin|53: StringToWideChar(FileName, BufW, SizeOf(BufW));|73: Result := SHChangeIconW(hOwner, BufW, SizeOf(BufW), IconIndex) = 1;|20: if Result then|25: FileName := BufW;|7: end|8: else|9: finally|28: if ShellHandle <> 0 then|31: FreeLibrary(ShellHandle);|6: end;|4:end;|0:|0:|27:procedure THiAsmClass.Icon;|3:var|16: file1: string;|18: index1: Integer;|5:begin|35:ChangeIconDialog(0, file1, index1);|31:_hi_onEvent(onFilename, file1);|29:_hi_onEvent(onIndex, index1);|4:end;|0:|4:end.|
link(onFilename,7880657:doText,[(398,209)(398,188)])
link(onIndex,9342710:doText,[(398,216)(398,237)])
}
Add(Label,1825211,28,14)
{
Left=25
Top=15
Width=20
Height=17
Caption="File"
}
Add(Edit,7880657,427,182)
{
Left=65
Top=15
Width=245
}
Add(Label,14873444,28,63)
{
Left=25
Top=50
Width=30
Height=17
Caption="Index"
}
Add(Edit,9342710,427,231)
{
Left=65
Top=45
Width=245
}

карма: 2

2
Голосовали:ser_davkin, Tad
Ответов: 70
Рейтинг: 1
#18: 2013-07-09 00:04:00 ЛС | профиль | цитата
halt
Ого. Я был ужасно далек от результата. Спасибо вам большое
карма: 0

0
18
Сообщение
...
Прикрепленные файлы
(файлы не залиты)