ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|
Открытие ярлыка через Delphi |

12.06.2008, 22:21
|
|
Новичок
Регистрация: 12.05.2008
Сообщений: 19
Провел на форуме: 28051
Репутация:
2
|
|
Открытие ярлыка через Delphi
суть такова: нужно программно открыть ярлык нажатием на кнопочку. Теперь подробнее:
Путь к ярлыку: C:\Program Files\Borland\Delphi7\Projects\A
Содержимое: файл A.rc, файл brcc32.exe и файл brcc32.exe.lnk
В ярлыке все нужное уже сделано. При его запуске вручную двумя кликами файл A.rc компилируется, и получается ресурс A.res
То же самое необходимо теперь провернуть при помощи Delphi. Сделать такую строку:
Код:
ShellExecute(Handle, 'open', 'brcc32.exe', nil, s, SW_RESTORE);
можно. Работает, но смысл? Его нет..
А такая строка:
Код:
ShellExecute(Handle, 'open', 'brcc32.exe.lnk', nil, s, SW_RESTORE);
также никакого смысла не несет, потому что ярлык не запускается, следовательно ресурс не компилируется!!
При попытке:
Код:
case ShellExecute(Handle, 'open', 'brcc32.exe.lnk', nil, s, SW_RESTORE) of
2: ShowMessage('wrong');
end;
вылезает то самое сообщение 'wrong'..
кстати, s - это путь к папке типа PAnsiChar
Как же мне сделать так, чтобы я смог провернуть необходимую мне операцию??? Помогите, пожалуйста, очень прошу.. уже исчерпал все, что знал.. А надо!! Мне это строить и жить помогает!
|
|
|

12.06.2008, 23:39
|
|
Участник форума
Регистрация: 10.01.2007
Сообщений: 140
Провел на форуме: 246020
Репутация:
105
|
|
дабавь в раздел uses
юзай так
Код:
ShellExecute(0, 'open' ,PChar(cmd), nil, nil, SW_SHOWNORMAL);
где cmd это имя файла который надо открыть.
Последний раз редактировалось t04; 12.06.2008 в 23:43..
|
|
|

13.06.2008, 10:17
|
|
Новичок
Регистрация: 12.05.2008
Сообщений: 19
Провел на форуме: 28051
Репутация:
2
|
|
для t04:
ну и что ты мне написал?.. я и так знаю, как юзается ShellExecute (я же это вполне подробно описал), и что нужно подкдлючить в uses. Программа ошибок не выдает, только вот brcc32.exe запустить я могу, а brcc32.exe.lnk - нет, а НАДО!!!
|
|
|

13.06.2008, 10:44
|
|
Познающий
Регистрация: 24.06.2007
Сообщений: 36
Провел на форуме: 177842
Репутация:
5
|
|
Глупый вопрос задаю... Но как сделать на делфи лоадер библиотеке dll ??
Напишите код пожайлуста =)
|
|
|

13.06.2008, 14:00
|
|
Познающий
Регистрация: 22.03.2008
Сообщений: 63
Провел на форуме: 247838
Репутация:
65
|
|
создай новый проект , допиши в uses ShellApi
и вставь строчку в код -
ShellExecute(0,'open',PCHAR(cmd),nil,nil,SW_SHOWNO RMAL);
где cmd - rundll32 <полный путь и имя библиотеки>
если библиотека зарегестрирована в системе, то можно указать просто <имя>
|
|
|

13.06.2008, 14:01
|
|
Познающий
Регистрация: 22.03.2008
Сообщений: 63
Провел на форуме: 247838
Репутация:
65
|
|
Глупый вопрос задаю... Но как сделать на делфи лоадер библиотеке dll ??
Напишите код пожайлуста =)
создай новый проект , допиши в uses ShellApi
и вставь строчку в код -
ShellExecute(0,'open',PCHAR(cmd),nil,nil,SW_SHOWNO RMAL);
где cmd - rundll32 <полный путь и имя библиотеки>
если библиотека зарегестрирована в системе, то можно указать просто <имя>
|
|
|

13.06.2008, 20:14
|
|
Познавший АНТИЧАТ
Регистрация: 01.04.2007
Сообщений: 1,268
Провел на форуме: 10046345
Репутация:
4589
|
|
Сообщение от SNAIPER ShoT
Глупый вопрос задаю... Но как сделать на делфи лоадер библиотеке dll ??
Напишите код пожайлуста =)
hDll := LoadLibrary('you_dll.dll');
-----
ShellExecute(Handle, 'open', 'brcc32.exe.lnk', nil, s, SW_RESTORE);
ShellExecute(Handle, 'open', PChar(S + 'brcc32.exe.lnk'), nil, s, SW_RESTORE);
Последний раз редактировалось BlackSun; 13.06.2008 в 20:16..
|
|
|

13.06.2008, 23:30
|
|
Новичок
Регистрация: 12.05.2008
Сообщений: 19
Провел на форуме: 28051
Репутация:
2
|
|
что-то ничего не выходит.. пишу так:
Код:
s:=PChar('C:\Program Files\Borland\Delphi7\Projects\A');
case
ShellExecute(Handle, 'open', PChar(s+'brcc32.exe.lnk'), nil, s, SW_RESTORE) of
2: ShowMessage('wrong');
end;
все равно ничего не выходит.. сообщение 'wrong' уже не вылезает, путь к файлу верный, почему же тогда ярлык не запускается?! неужели эту проблему решить невозможно?! глупо, что проект завис на такой мелочи..
|
|
|

14.06.2008, 19:49
|
|
Новичок
Регистрация: 14.06.2007
Сообщений: 25
Провел на форуме: 88174
Репутация:
6
|
|
var
S: PAnsiChar;
begin
S := PChar ('C:\Program Files\Borland\Delphi7\Projects\A');
case ShellExecute(Handle, 'open', PChar (S+'\brcc32.exe.lnk'), nil, s, SW_RESTORE) of
2: ShowMessage('wrong');
end;
BackSlash поставь. Так должно работать. По крайней мере у меня всё работает.
|
|
|

15.06.2008, 00:19
|
|
Постоянный
Регистрация: 30.04.2008
Сообщений: 323
Провел на форуме: 379101
Репутация:
136
|
|
Сообщение от Попрошайка
var
S: PAnsiChar;
begin
S := PChar ('C:\Program Files\Borland\Delphi7\Projects\A');
case ShellExecute(Handle, 'open', PChar (S+'\brcc32.exe.lnk'), nil, s, SW_RESTORE) of
2: ShowMessage('wrong');
end;
BackSlash поставь. Так должно работать. По крайней мере у меня всё работает.
Смысл тогда преобразование делать если тип PAnsiChar
Код:
S: PAnsiChar;
begin
S := 'C:\Program Files\Borland\Delphi7\Projects\A';
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|