ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

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

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

  #1461  
Старый 29.04.2008, 22:50
zl0y
Banned
Регистрация: 13.09.2006
Сообщений: 523
Провел на форуме:
2869410

Репутация: 925


Отправить сообщение для zl0y с помощью ICQ
По умолчанию

Цитата:
Сообщение от desTiny  
что-нть типа:
Код:
function DownloadFile(const Url: string): string;
var
  NetHandle: HINTERNET;
  UrlHandle: HINTERNET;
  Buffer: array[0..1024] of char;
  BytesRead: cardinal;
begin
  Result := '';
  NetHandle := InternetOpen('Delphi 7.x', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);

  if Assigned(NetHandle) then
    begin

    UrlHandle := InternetOpenUrl(NetHandle, PChar(Url), nil, 0, INTERNET_FLAG_RELOAD, 0);

    if Assigned(UrlHandle) then
      { UrlHandle правильный? Начинаем загрузку } 
      begin 
      FillChar(Buffer, SizeOf(Buffer), 0); 
      repeat
        Result := Result + Buffer;
        FillChar(Buffer, SizeOf(Buffer), 0);
        InternetReadFile(UrlHandle, @Buffer, SizeOf(Buffer), BytesRead);
      until BytesRead = 0; 
      InternetCloseHandle(UrlHandle); 
      end 
    else 
      begin 
      { UrlHandle неправильный. Генерируем исключительную ситуацию. } 
      raise Exception.CreateFmt('Cannot open URL %s', [Url]); 
      end;

    InternetCloseHandle(NetHandle); 
    end 
  else 
    { NetHandle недопустимый. Генерируем исключительную ситуацию } 
    raise Exception.Create('Unable to initialize Wininet'); 
end;
В процессе размер в BytesRead..
Конечно, не совсем то, но всё же...

PS И не такое уж и гавно wininet А с сокетами работать надо ОсТоРоЖнО
У меня тоже самое уже есть раза 3 на wininet и 2 на winsock'e,кстати флаг надо ставить чтобы не писал в кеш! Просто надоело подгонять winsock под ответы серверов и коды типо 302 moved here and e.t.c думаю,надо просто сесть и написать это норм а не страдать хней с wininet'ом



Цитата:
UrlHandle := InternetOpenUrl(NetHandle, PChar(Url), nil,
ВОт тут то и пауза если сервак не пашет,думаю надо все делать через потоки т.к установить таймаут для коннекта мне не удалось.
 

  #1462  
Старый 29.04.2008, 22:56
NetSter
студент
Регистрация: 30.07.2007
Сообщений: 800
Провел на форуме:
4275992

Репутация: 1188


Question

Доброго времени суток. есть вопросик.
наведите пожалуйста пример написания функции на делфи, которая запускает программу или файл с помощью другой программы.
на С++ я себе представил это так
Код:
spawnl (P_WAIT,"c:\\windows\\notepad.exe","","input.txt",NULL) ;
нужно сделать тож самое только на Делфи.
Заранее спасибо.
 

  #1463  
Старый 29.04.2008, 23:01
De-visible
Banned
Регистрация: 06.01.2008
Сообщений: 904
Провел на форуме:
4037638

Репутация: 1821


Отправить сообщение для De-visible с помощью ICQ
По умолчанию

Вот подробно:

Функция ShellExecute

Код:
ShellExecute( hwnd: THandle, // указатель на родительское окно
lpOperation: PChar, //выполняемая операция
lpFile: PChar, // файл или папка
lpParameters: PСhar, //строка параметров запускаемой программы
lpDirectory: PChar, // директория по умолчанию
nShowCmd: integer // состояние окна запущенной программы
);
Цитата:
hwnd
Определяет родительское окно, которое будет получать сообщения от запускаемого приложения (например, об ошибке при запуске).

lpOperation
Определяет выполняемую оперерацию.
"open" - открывает файл lpFile. Файл может быть документом, приложением или папкой.
"print" - печатает файл lpFile. Файл должен быть документом. Если передано приложение, то выполняются действия, аналогичные "open".
"explore" - открывает папку lpFile в проводнике Windows.
nil - аналогично "open".

lpFile
Файл или папка. Функция может открыть или напечатать файл, открыть папку, запустить приложение.

lpParameters
Если lpFile - приложение, то lpParametrs может содержать строку параметров приложения.
Если lpFile - документ или папка, lpParameters должен быть nil.

nShowCmd
Определяет как должно выглядеть окно запущенного приложения

Пример использования:


Код:
ShellExecute(hInstance,"open","Программа",
"Файл", NULL, SW_SHOWNORMAL);

Последний раз редактировалось De-visible; 29.04.2008 в 23:31..
 

  #1464  
Старый 29.04.2008, 23:02
z01b
Постоянный
Регистрация: 05.01.2007
Сообщений: 508
Провел на форуме:
2360904

Репутация: 1393


По умолчанию

Цитата:
Сообщение от NetSter  
Доброго времени суток. есть вопросик.
наведите пожалуйста пример написания функции на делфи, которая запускает программу или файл с помощью другой программы.
на С++ я себе представил это так
Код:
spawnl (P_WAIT,"c:\\windows\\notepad.exe","","input.txt",NULL) ;
нужно сделать тож самое только на Делфи.
Заранее спасибо.
Может просто добавить к notepad-у аргумент (место файла). Вот например так WinExec('c:\\windows\\notepad.exe c:\\input.txt',SW_SHOW);

ЗЫ Если программа считывает аргументы при старте, то будет открывать как тебе нужно, иначе она просто откроется, как без аргумента.

Последний раз редактировалось z01b; 29.04.2008 в 23:04..
 

  #1465  
Старый 29.04.2008, 23:12
desTiny
Reservists Of Antichat - Level 6
Регистрация: 04.02.2007
Сообщений: 1,152
Провел на форуме:
3008839

Репутация: 1502


По умолчанию

Цитата:
Сообщение от z01b  
Может просто добавить к notepad-у аргумент (место файла). Вот например так WinExec('c:\\windows\\notepad.exe c:\\input.txt',SW_SHOW);

ЗЫ Если программа считывает аргументы при старте, то будет открывать как тебе нужно, иначе она просто откроется, как без аргумента.
Micro$oft не рекомендует пользоваться функцией winexec, она оставлена только для совместимости с 9x
ShellExecute - что-то похожее
Ни ту, ни другую функцию заставить работать нормально и правильно лично мне не удалось.
Посему использую CreateProcess.
__________________
Bedankt euch dafür bei euch selbst.

H_2(S^3/((z1, z2)~(exp(2pi*i/p)z1, exp(2pi*q*i/p)z2)))=Z/pZ
 

  #1466  
Старый 29.04.2008, 23:15
z01b
Постоянный
Регистрация: 05.01.2007
Сообщений: 508
Провел на форуме:
2360904

Репутация: 1393


По умолчанию

Цитата:
Сообщение от desTiny  
Micro$oft не рекомендует пользоваться функцией winexec, она оставлена только для совместимости с 9x
ShellExecute - что-то похожее
Ни ту, ни другую функцию заставить работать нормально и правильно лично мне не удалось.
Посему использую CreateProcess.
У меня с WinExec, проблем не возникало ...
 

  #1467  
Старый 29.04.2008, 23:16
De-visible
Banned
Регистрация: 06.01.2008
Сообщений: 904
Провел на форуме:
4037638

Репутация: 1821


Отправить сообщение для De-visible с помощью ICQ
По умолчанию

Цитата:
Сообщение от desTiny  
Micro$oft не рекомендует пользоваться функцией winexec, она оставлена только для совместимости с 9x
ShellExecute - что-то похожее
Ни ту, ни другую функцию заставить работать нормально и правильно лично мне не удалось.
Посему использую CreateProcess.
Ха, а ты молодец!

Цитата:
* ShellExecute - запускает оболочку, ассоциированную с расширением файла, передаваемого ей в качестве параметра. Например, если передать файл с расширением doc, то запустится редактор MS Word (если он установлен в системе). В качестве параметра функции можно передать и файл с раширением exe.;
* CreateProcess - создает новый процесс и его первичный поток. Данная функция используется в Win32 для запуска других приложений.;
* WinExec , LoadModule - достались в наследство от Windows 3.x, Microsoft не рекомендует использовать ее в приложениях Win32 (они работают через вызов CreateProcess).

Функция CreateProcess

Цитата:
По сравнению с ShellExecute, функция дает дополнительные возможности по управлению процессом: можно установить начальный приоритет первого потока процесса, выставить положение и размер окна приложения, дождаться завершения процесса, завершить процесс.
Код:
CreateProcess
(lpApplicationName: PChar, // имя исполняемого модуля
lpCommandLine: PChar, // строка параметров запускаемой программы
lpProcessAttributes: TSecurityAttributes, // структура SECURITY_ATTRIBUTES процесса
lpThreadAttributes: TSecurityAttributes, // структура SECURITY_ATTRIBUTES потока
bInheritHandles: LongBool, // флаг наследования текущего процесса
dwCreationFlags: Longword, // флаги способов создания процесса
lpEnvironment: Pointer, // указатель на блок среды
lpCurrentDirectory: PChar, // текущий диск и каталог
lpStartupInfo:TStartupInfo, // структура STARTUPINFO
lpProcessInformation: TProcessInformation // структура PROCESS_INFORMATION
): LongBool;

Использование:
Код:
var
i:LongBool
i:=CreateProcess('Программа', ' файл', nil, nil, false, NORMAL_PRIORITY_CLASS, nil, nil, StartUpInfo, ProcessInfo);
Код:
CreateProcess('C:WindowsSystem32 otepad.exe', ' c: eadme.txt', nil, nil, false, NORMAL_PRIORITY_CLASS, nil, nil, StartUpInfo, ProcessInfo);

Последний раз редактировалось De-visible; 29.04.2008 в 23:35..
 

  #1468  
Старый 29.04.2008, 23:47
GSM™
Участник форума
Регистрация: 02.11.2007
Сообщений: 230
Провел на форуме:
1819358

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

Цитата:
Сообщение от KindEcstasy  
KIR@PRO


GSM™
Не компилируеться? Как ругается?
На вот эту строчку-
if not WriteFile(hPort, S, StrLen(S), actual_bytes, nil) then begin
а именно на это-
actual_bytes
 

  #1469  
Старый 29.04.2008, 23:57
z01b
Постоянный
Регистрация: 05.01.2007
Сообщений: 508
Провел на форуме:
2360904

Репутация: 1393


По умолчанию

Цитата:
Сообщение от GSM™  
На вот эту строчку-
if not WriteFile(hPort, S, StrLen(S), actual_bytes, nil) then begin
а именно на это-
actual_bytes
что имено пишет, дай плз весь листинг ошибки.
 

  #1470  
Старый 30.04.2008, 00:14
GSM™
Участник форума
Регистрация: 02.11.2007
Сообщений: 230
Провел на форуме:
1819358

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

Цитата:
Сообщение от z01b  
что имено пишет, дай плз весь листинг ошибки.
[Ошибка] TestRosh.pas(93): Types of actual and formal var parameters must be identical
[Ошибка] TestRosh.pas(97): Undeclared identifier: 'Edit3'
[Ошибка] TestRosh.pas(107): Undeclared identifier: 'PortCombo'
[Ошибка] TestRosh.pas(107): 'END' expected but ')' found
[Ошибка] TestRosh.pas(121): Undeclared identifier: 'PortCombo'
[Ошибка] TestRosh.pas(121): 'END' expected but ')' found
[Ошибка] TestRosh.pas(128): ';' expected but 'IF' found
[Ошибка] TestRosh.pas(132): '.' expected but ';' found
[Ошибка] TestRosh.pas(136): Undeclared identifier: 'Button2'
[Ошибка] TestRosh.pas(142): Undeclared identifier: 'PortCombo'
[Ошибка] TestRosh.pas(27): Unsatisfied forward or external declaration: 'TForm1.FormDestroy'
[Фатальная Ошибка] Project1.dpr(5): Could not compile used unit 'TestRosh.pas'
 
 





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


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




ANTICHAT.XYZ