Автор | Сообщение |
|
| |
Пост N: 2
Зарегистрирован: 23.06.08
|
|
Отправлено: 24.06.08 17:47. Заголовок: Как запуcкать приложения без использования __Run
Здравствуйте ! Подскажите пожалуйста, как можно запустить приложение не используя командную строку ?
|
|
|
Ответов - 72
, стр:
1
2
3
4
All
[только новые]
|
|
|
| |
Пост N: 2802
Зарегистрирован: 17.05.05
|
|
Отправлено: 19.03.13 15:46. Заголовок: еще не все ;) Suspic..
еще не все ;) Suspicious pointer conversion in function HB_FUN_EXECANDWAIT в строке char * szProg = hb_parc(1); что ему надо ? ;) PS Harbour 3.2
|
|
|
|
| постоянный участник
|
Пост N: 1126
Зарегистрирован: 09.10.06
|
|
Отправлено: 19.03.13 18:03. Заголовок: Ему надо const char..
Ему надо const char * szProg = hb_parc(1);
|
|
|
|
| |
Пост N: 2803
Зарегистрирован: 17.05.05
|
|
Отправлено: 19.03.13 18:22. Заголовок: Петр Да теперь там ..
Петр Да теперь там не ругается но ругается в другом месте Warning W8075 pew.prg 238: Suspicious pointer conversion in function HB_FUN_EXECANDWAIT на этой строке if( CreateProcess(NULL, szProg, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &proc ) )
|
|
|
|
| постоянный участник
|
Пост N: 1129
Зарегистрирован: 09.10.06
|
|
Отправлено: 19.03.13 19:04. Заголовок: Это естественно - об..
Это естественно - обычное приведение типов Или игнорируйте, или функцию для использования с Harbour нужно переписать. За пример можно взять WIN_RUNDETACHED, библиотека hbwin
|
|
|
|
| |
Пост N: 2804
Зарегистрирован: 17.05.05
|
|
Отправлено: 19.03.13 19:08. Заголовок: Петр Понятно ;) Зна..
Петр Понятно ;) Знал бы С сюда бы не написал ;) Спасибо и на этом.
|
|
|
|
| постоянный участник
|
Пост N: 1130
Зарегистрирован: 09.10.06
|
|
Отправлено: 19.03.13 21:36. Заголовок: Понятно ;) Возможно..
Понятно ;) Возможно потребуется напильник - не компилировал и не тестировал. цитата: | #pragma BEGINDUMP #include <windows.h> #include "hbapi.h" #include "hbvm.h" #include "hbwinuni.h" HB_FUNC( EXECANDWAIT ) { void * hProg; HB_SIZE nLen; LPCTSTR lpProg = HB_PARSTR( 1, &hProg, &nLen ); DWORD dwResult = 0xFFFFFFFF; STARTUPINFO si; PROCESS_INFORMATION proc; memset( &si, 0, sizeof(si) ); si.cb = sizeof( si ); si.dwFlags = STARTF_USESHOWWINDOW; si.wShowWindow = (WORD) hb_parnldef( 2, SW_SHOWDEFAULT ); if( CreateProcess( NULL, HB_STRUNSHARE( &hProg, lpProg, nLen ), /* Command line (Unicode version needs an non-const buffer) */ NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &proc ) ) { hb_vmUnlock(); WaitForInputIdle( proc.hProcess, INFINITE ); if( WaitForSingleObject( proc.hProcess, INFINITE ) == WAIT_OBJECT_0 ) { if( ! GetExitCodeProcess( proc.hProcess, &dwResult ) ) dwResult = 0xFFFFFFFF; } CloseHandle( proc.hThread ); CloseHandle( proc.hProcess ); hb_vmLock(); } hb_retnint( dwResult ); hb_strfree( hProg ); } #pragma ENDDUMP |
|
|
|
|
|
| постоянный участник
|
Пост N: 2755
Зарегистрирован: 12.09.06
|
|
Отправлено: 19.03.13 21:51. Заголовок: Дима, ты про эту фун..
|
|
|
|
| |
Пост N: 2805
Зарегистрирован: 17.05.05
|
|
Отправлено: 19.03.13 22:07. Заголовок: Петр пишет: Возможн..
Петр пишет: цитата: | Возможно потребуется напильник - не компилировал и не тестировал |
| Спасибо но... Warning W8065 pew.prg 226: Call to function 'HB_PARSTR' with no prototype in function HB_FUN_EXECANDWAIT Warning W8069 pew.prg 226: Nonportable pointer conversion in function HB_FUN_EXECANDWAIT Warning W8065 pew.prg 239: Call to function 'HB_STRUNSHARE' with no prototype in function HB_FUN_EXECANDWAIT Error E2342 ped.prw 240: Type mismatch in parameter 'lpCommandLine' (wanted 'signed char *', got 'int') in function HB_F UN_EXECANDWAIT Warning W8065 pew.prg 242: Call to function 'hb_vmUnlock' with no prototype in function HB_FUN_EXECANDWAIT Warning W8065 pew.prg 254: Call to function 'hb_vmLock' with no prototype in function HB_FUN_EXECANDWAIT Warning W8065 pew.prg 257: Call to function 'hb_retint' with no prototype in function HB_FUN_EXECANDWAIT Error E2379 ped.prw 259: Statement missing ; in function HB_FUN_EXECANDWAIT Warning W8004 pew.prg 260: 'lpProg' is assigned a value that is never used in function HB_FUN_EXECANDWAIT
|
|
|
|
| постоянный участник
|
Пост N: 1132
Зарегистрирован: 09.10.06
|
|
Отправлено: 19.03.13 22:26. Заголовок: А теперь ?..
А теперь ?
|
|
|
|
| |
Пост N: 2806
Зарегистрирован: 17.05.05
|
|
Отправлено: 19.03.13 22:34. Заголовок: Петр пишет: А тепер..
Петр пишет: Теперь все собирается. Проверю завтра. Спасибо ! Каковы параметры функции (как в WAPI_ShellExecute) ?
|
|
|
|
| постоянный участник
|
Пост N: 1133
Зарегистрирован: 09.10.06
|
|
Отправлено: 19.03.13 22:59. Заголовок: Dima пишет: Каковы ..
Dima пишет: цитата: | Каковы параметры функции (как в WAPI_ShellExecute) ? |
| Не совсем понял, как в оригинале function WinExec32AndWait(const Cmd: String; const CmdShow: Integer): Cardinal; Из примера Андрея cFile := CurDrive()+":"+DirName()+"\backup_test2.bat" EXECANDWAIT(cFile) 2-й параметр в ExecAndWait == 6-й параметр в wapi_ShellExecute, по умолчанию SW_SHOWDEFAULT, можно на SW_SHOWNORMAL поменять Что, собственно, делать-то нужно?
|
|
|
|
|
| |
Пост N: 2807
Зарегистрирован: 17.05.05
|
|
Отправлено: 19.03.13 23:18. Заголовок: Петр пишет: Что, со..
Петр пишет: цитата: | Что, собственно, делать-то нужно? |
| Ни чего ;) 2 параметра я понял. Просто уточнил. Этот язык С для меня как китайская грамота ;) Завтра проверю и отпишу. Спасибо !
|
|
|
|
| |
Пост N: 2808
Зарегистрирован: 17.05.05
|
|
Отправлено: 20.03.13 09:05. Заголовок: Петр пишет: 2-й пар..
Петр пишет: цитата: | 2-й параметр в ExecAndWait |
| Все работает как надо , но если вторым параметром поставить 0 (он же SW_HIDE) то экран портится тем что выводит вызываемая программа. Похоже SW_HIDE не срабатывает. В WAPI_ShellExecute если вызвать туже программу с установкой SW_HIDE то все нормально Хотелось бы что бы запускаемый процесс происходил скрыто. PS GTWIN
|
|
|
|
| |
Пост N: 2809
Зарегистрирован: 17.05.05
|
|
Отправлено: 20.03.13 09:37. Заголовок: Переделал сам (вроде..
Переделал сам (вроде пашет как и хотел) Вот этот кусочек if( CreateProcess( NULL, HB_STRUNSHARE( &hProg, lpProg, nLen ), /* Command line (Unicode version needs an non-const buffer) */ NULL, NULL, FALSE, CREATE_NEW_CONSOLE | NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &proc ) ) {
|
|
|
|
| постоянный участник
|
Пост N: 2757
Зарегистрирован: 12.09.06
|
|
Отправлено: 20.03.13 10:45. Заголовок: Dima пишет: Передел..
Dima пишет: цитата: | Переделал сам (вроде пашет как и хотел) |
| Пример (готовый) в студию !
|
|
|
|
| |
Пост N: 2810
Зарегистрирован: 17.05.05
|
|
Отправлено: 20.03.13 11:05. Заголовок: Andrey пишет: Приме..
Andrey пишет: цитата: | Пример (готовый) в студию ! |
| Да не вопрос. Proc main EXECANDWAIT("c:\winprint\winprint test.txt -c",SW_HIDE) return #pragma BEGINDUMP #include <windows.h> #include "hbapi.h" #include "hbvm.h" #include "hbwinuni.h" HB_FUNC( EXECANDWAIT ) { void * hProg; HB_SIZE nLen; LPCTSTR lpProg = HB_PARSTR( 1, &hProg, &nLen ); DWORD dwResult = 0xFFFFFFFF; STARTUPINFO si; PROCESS_INFORMATION proc; memset( &si, 0, sizeof(si) ); si.cb = sizeof( si ); si.dwFlags = STARTF_USESHOWWINDOW; si.wShowWindow = (WORD) hb_parnldef( 2, SW_SHOWDEFAULT ); if( CreateProcess( NULL, HB_STRUNSHARE( &hProg, lpProg, nLen ), /* Command line (Unicode version needs an non-const buffer) */ NULL, NULL, FALSE, CREATE_NEW_CONSOLE | NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &proc ) ) { hb_vmUnlock(); WaitForInputIdle( proc.hProcess, INFINITE ); if( WaitForSingleObject( proc.hProcess, INFINITE ) == WAIT_OBJECT_0 ) { if( ! GetExitCodeProcess( proc.hProcess, &dwResult ) ) dwResult = 0xFFFFFFFF; } CloseHandle( proc.hThread ); CloseHandle( proc.hProcess ); hb_vmLock(); } hb_retnint( dwResult ); hb_strfree( hProg ); } #pragma ENDDUMP
|
|
|
|
| |
Пост N: 2828
Зарегистрирован: 17.05.05
|
|
Отправлено: 21.03.13 00:07. Заголовок: Andrey пишет: Приме..
Andrey пишет: цитата: | Пример (готовый) в студию ! |
| Что в студии говорят ?
|
|
|
|
| постоянный участник
|
Пост N: 2764
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.03.13 00:35. Заголовок: Dima пишет: Что в с..
Dima пишет: Да еще не добрался... Целый день как пчелка тружусь, с 10 и вот сейчас до ночи 01:33.... Отвечаю и между делом пытаюсь что-то написать своё...
|
|
|
|
| |
Пост N: 90
Зарегистрирован: 19.05.05
|
|
Отправлено: 21.03.13 09:32. Заголовок: Работает, запускает ..
Работает, запускает и в обычном режиме и в скрытом. Но в обычном режиме данные за вызванным приложением портятся. Но это, наверное, издержки ожидания окончания вызванного процесса Терминал GTWVT
|
|
|
|
| постоянный участник
|
Пост N: 850
Зарегистрирован: 27.01.07
|
|
Отправлено: 21.03.13 09:45. Заголовок: Может вместо CREATE_..
Может вместо CREATE_NEW_CONSOLE использовать CREATE_NO_WINDOW?
|
|
|
Ответов - 72
, стр:
1
2
3
4
All
[только новые]
|
|