Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.06.2015, 19:18   #1
HTTqp
Форумчанин
 
Регистрация: 20.12.2013
Сообщений: 164
По умолчанию Передать данные в WinExec

Кто нибудь подскажет как передать данные в winexec чтобы выполнилось действие.
Есть программа делает каждый час бекап файла, но не получается добавить ее в планировщик задач через cmd.

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  buf: String;
begin
  buf:='cmd /c "Schtasks /Create /sc minute /mo 60 /tn "Backup_File" /tr "'+GetWin('%APPDATA%')+'\FileZilla\Backup_File\' + 'Backup.exe""';
  WinExec(PAnsiChar(buf), Sw_Show);
  ShellExecute(Handle, nil, PChar(buf), nil,nil, Sw_Show);
end;
главное если просто выполнить команду

Код:
'cmd /c "Schtasks /Create /sc minute /mo 60 /tn "Backup_File" /tr "'+GetWin('%APPDATA%')+'\FileZilla\Backup_File\' + 'Backup.exe""'
через Win+R -> "Выполнить" программа добавляется в планировщик задач без проблем, а программно не хочет!
HTTqp вне форума Ответить с цитированием
Старый 13.06.2015, 20:32   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Код:
GetWin('%APPDATA%')
что возвращает? в какой кодировке? Мож, лучше это?
winexec() - отстой, юзай, хотя бы, ShellExecute() и контролируй её код возврата.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 13.06.2015, 21:21   #3
HTTqp
Форумчанин
 
Регистрация: 20.12.2013
Сообщений: 164
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
что возвращает? в какой кодировке? Мож, лучше это?
winexec() - отстой, юзай, хотя бы, ShellExecute() и контролируй её код возврата.
благодарю, функция GetEnvironmentVariable намного проще)
но все равно работа кода не изменилась, т.е. он отказывается выполняться. Главное компилируется, но не выполняется

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  buf: String;
begin
  buf:='cmd /c "Schtasks /Create /sc minute /mo 60 /tn "Backup_File" /tr "'+GetEnvironmentVariable ('APPDATA')+'\FileZilla\Backup_File\' + 'Backup.exe""';
  WinExec(PAnsiChar(buf), Sw_Show);
  ShellExecute(Handle, nil, PChar(buf), nil,nil, Sw_Show);
end;
HTTqp вне форума Ответить с цитированием
Старый 13.06.2015, 21:25   #4
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
но все равно работа кода не изменилась, т.е. он отказывается выполняться. Главное компилируется, но не выполняется
WinExec() выкинул?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 13.06.2015, 21:34   #5
HTTqp
Форумчанин
 
Регистрация: 20.12.2013
Сообщений: 164
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
WinExec() выкинул?
да пробовал и так:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  buf: String;
begin
  buf:='cmd /c "Schtasks /Create /sc minute /mo 60 /tn "Backup_File" /tr "'+GetEnvironmentVariable ('APPDATA')+'\FileZilla\Backup_File\' + 'Backup.exe""';
  ShellExecute(Handle, nil, PChar(buf), nil,nil, Sw_Show);
end;
не добавляется, компилирует без ошибок.
HTTqp вне форума Ответить с цитированием
Старый 13.06.2015, 21:45   #6
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

ShellExecute() - это функция! что она возвращает?
Код:
function GetShellExecuteError(const ErrorCode: Integer; const FileName: string = ''): string;
var
 FN:string;
begin
{      Value	                             Meaning
 0              	The operating system is out of memory or resources.
 ERROR_FILE_NOT_FOUND	The specified file was not found.
 ERROR_PATH_NOT_FOUND	The specified path was not found.
 ERROR_BAD_FORMAT	The .EXE file is invalid (non-Win32 .EXE or error
                        in .EXE image).
 SE_ERR_ACCESSDENIED	The operating system denied access to the specified file.
 SE_ERR_ASSOCINCOMPLETE	The filename association is incomplete or invalid.
 SE_ERR_DDEBUSY	        The DDE transaction could not be completed because other
                        DDE transactions were being processed.
 SE_ERR_DDEFAIL	        The DDE transaction failed.
 SE_ERR_DDETIMEOUT	The DDE transaction could not be completed because the
                        request timed out.
 SE_ERR_DLLNOTFOUND	The specified dynamic-link library was not found.
 SE_ERR_FNF	        The specified file was not found.
 SE_ERR_NOASSOC	        There is no application associated with the given
                        filename extension.
 SE_ERR_OOM	        There was not enough memory to complete the operation.
 SE_ERR_PNF	        The specified path was not found.
 SE_ERR_SHARE     	A sharing violation occurred.}

 Result:='';
 FN:='';
 if FileName<>''
  then FN:=' '+FileName;
 case ErrorCode of
  {0                      }  0 : Result:='Системе не хватает памяти или ресурсов для выполнения операции';
  {SE_ERR_FNF             }  2 : Result:='Файл'+FN+' не найден.';
  {SE_ERR_PNF             }  3 : Result:='Путь к файлу'+FN+' не найден.';
  {SE_ERR_ACCESSDENIED    }  5 : Result:='Нет доступа к файлу'+FN+'.';
  {SE_ERR_OOM             }  8 : Result:='Недостаточно памяти для выполнения операции.';
  {ERROR_BAD_FORMAT       } 11 : Result:='Файл'+FN+' не является приложением Win32 или повреждён.';
  {SE_ERR_SHARE           } 26 : Result:='Ошибка при совместном доступе к файлу'+FN+'.';
  {SE_ERR_ASSOCINCOMPLETE } 27 : Result:='The filename association is incomplete or invalid.';
  {SE_ERR_DDETIMEOUT      } 28 : Result:='The DDE transaction could not be completed because the request timed out.';
  {SE_ERR_DDEFAIL         } 29 : Result:='Транзакция DDE не может быть выполнена.';
  {SE_ERR_DDEBUSY         } 30 : Result:='Транзакция DDE не может быть выполнена, т.к. выполняется другая транзакция DDE.';
  {SE_ERR_NOASSOC         } 31 : Result:='Файлу'+FN+' не сопоставлено приложение для его открытия.';
  {SE_ERR_DLLNOTFOUND     } 32 : Result:='Не найдена необходимая динамическая библиотека (DLL).';
  1,4,6,7,9,10,12..25          : Result:='Ошибка при работе с файлом'+FN+'.';
 end;//case
end;
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 13.06.2015, 22:11   #7
HTTqp
Форумчанин
 
Регистрация: 20.12.2013
Сообщений: 164
По умолчанию

Наконец то проблема решена, нужно было передавать не 1 параметр, а 2.

вот решение:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  cmd,comand: String;
begin
  cmd:='cmd.exe';
  comand:='/c "Schtasks /Create /sc minute /mo 60 /tn "Backup_File" /tr "'+GetWin('%APPDATA%')+'\FileZilla\Backup_File\' + 'Backup.exe""';
  ShellExecute(0,'open',PChar(cmd),PChar(comand),Nil,SW_SHOW)
end;
HTTqp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передать данные формы MedwedoS JavaScript, Ajax 2 23.11.2014 19:25
Передать данные с формы UKRtortik PHP 5 23.04.2014 17:59
Как передать данные из БД в ComBox uni Microsoft Office Excel 8 22.07.2011 08:20
Передать данные в интернет CKorpion Работа с сетью в Delphi 3 07.08.2010 12:38
передать данные другому приложению vasya_pupkin Win Api 1 16.02.2007 20:17