HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Открытие ярлыка через Delphi
  #1751  
Старый 12.06.2008, 22:21
Nick_Rimer
Новичок
Регистрация: 12.05.2008
Сообщений: 19
Провел на форуме:
28051

Репутация: 2
Exclamation Открытие ярлыка через 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

Как же мне сделать так, чтобы я смог провернуть необходимую мне операцию??? Помогите, пожалуйста, очень прошу.. уже исчерпал все, что знал.. А надо!! Мне это строить и жить помогает!
 
Ответить с цитированием

  #1752  
Старый 12.06.2008, 23:39
t04
Участник форума
Регистрация: 10.01.2007
Сообщений: 140
Провел на форуме:
246020

Репутация: 105
По умолчанию

дабавь в раздел uses
Код:
uses
  ShellAPI;
юзай так
Код:
ShellExecute(0, 'open' ,PChar(cmd), nil, nil, SW_SHOWNORMAL);
где cmd это имя файла который надо открыть.

Последний раз редактировалось t04; 12.06.2008 в 23:43..
 
Ответить с цитированием

  #1753  
Старый 13.06.2008, 10:17
Nick_Rimer
Новичок
Регистрация: 12.05.2008
Сообщений: 19
Провел на форуме:
28051

Репутация: 2
По умолчанию

для t04:

ну и что ты мне написал?.. я и так знаю, как юзается ShellExecute (я же это вполне подробно описал), и что нужно подкдлючить в uses. Программа ошибок не выдает, только вот brcc32.exe запустить я могу, а brcc32.exe.lnk - нет, а НАДО!!!
 
Ответить с цитированием

  #1754  
Старый 13.06.2008, 10:44
SNAIPER ShoT
Познающий
Регистрация: 24.06.2007
Сообщений: 36
Провел на форуме:
177842

Репутация: 5
Отправить сообщение для SNAIPER ShoT с помощью ICQ
По умолчанию

Глупый вопрос задаю... Но как сделать на делфи лоадер библиотеке dll ??
Напишите код пожайлуста =)
 
Ответить с цитированием

  #1755  
Старый 13.06.2008, 14:00
_empty
Познающий
Регистрация: 22.03.2008
Сообщений: 63
Провел на форуме:
247838

Репутация: 65
По умолчанию

создай новый проект , допиши в uses ShellApi

и вставь строчку в код -

ShellExecute(0,'open',PCHAR(cmd),nil,nil,SW_SHOWNO RMAL);


где cmd - rundll32 <полный путь и имя библиотеки>
если библиотека зарегестрирована в системе, то можно указать просто <имя>
 
Ответить с цитированием

  #1756  
Старый 13.06.2008, 14:01
_empty
Познающий
Регистрация: 22.03.2008
Сообщений: 63
Провел на форуме:
247838

Репутация: 65
По умолчанию

Цитата:
Глупый вопрос задаю... Но как сделать на делфи лоадер библиотеке dll ??
Напишите код пожайлуста =)
создай новый проект , допиши в uses ShellApi

и вставь строчку в код -

ShellExecute(0,'open',PCHAR(cmd),nil,nil,SW_SHOWNO RMAL);

где cmd - rundll32 <полный путь и имя библиотеки>
если библиотека зарегестрирована в системе, то можно указать просто <имя>
 
Ответить с цитированием

  #1757  
Старый 13.06.2008, 20:14
BlackSun
Познавший АНТИЧАТ
Регистрация: 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..
 
Ответить с цитированием

  #1758  
Старый 13.06.2008, 23:30
Nick_Rimer
Новичок
Регистрация: 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' уже не вылезает, путь к файлу верный, почему же тогда ярлык не запускается?! неужели эту проблему решить невозможно?! глупо, что проект завис на такой мелочи..
 
Ответить с цитированием

  #1759  
Старый 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 поставь. Так должно работать. По крайней мере у меня всё работает.
 
Ответить с цитированием

  #1760  
Старый 15.06.2008, 00:19
0verbreaK
Постоянный
Регистрация: 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';
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Wi-Fi, BT] Задай вопрос - получи ответ! Alexsize Беспроводные технологии/Wi-Fi/Wardriving 2568 25.04.2026 12:58
[jQuery] - Задай вопрос, получи ответ Isis PHP 62 25.12.2009 03:25



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ