Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Windows [игнор отключен] [закрыт для гостей] / Командная строка как послать команду в неё? / 13 сообщений из 13, страница 1 из 1
13.06.2007, 23:43:44
    #34593319
dartvaider
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Командная строка как послать команду в неё?
Проблема такая есть консольное приложение которым нужно управлять....
т.е. в консоле Win Xp запускать это приложение и прописывать команды и ключи запуска.....

Подскажите как осуществить управление этим приложением с других приложений?
...
Рейтинг: 0 / 0
14.06.2007, 00:21:30
    #34593348
rrrrrrrrrr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Командная строка как послать команду в неё?
cmd.exe /c ...
Пример:
cmd /c net time \\dcserver /set /y

и стоит посмотреть
Пуск-Выполнить-cmdcmd /?
только оно же по идее и независимо оттого, откуда запущено, будет понимать ключи?
Пуск-Выполнить-program.exe Param1 Param2 ... ParamN
В общем, задача неясна :)
...
Рейтинг: 0 / 0
14.06.2007, 09:00:44
    #34593572
dartvaider
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Командная строка как послать команду в неё?
rrrrrrrrrrcmd.exe /c ...
Пример:
cmd /c net time \\dcserver /set /y

и стоит посмотреть
Пуск-Выполнить-cmdcmd /?
только оно же по идее и независимо оттого, откуда запущено, будет понимать ключи?
Пуск-Выполнить-program.exe Param1 Param2 ... ParamN
В общем, задача неясна :)

это параметры запуска , или ключи запуска....

А как управлять уже запущенным приложением ?
т.е. допустим у меня в приложении если ввести чего либо , то произведе ться какое либо действие... ,
...
Рейтинг: 0 / 0
14.06.2007, 09:04:35
    #34593575
rrrrrrrrrr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Командная строка как послать команду в неё?
а, вы про посылку команд в окна? nnCron'ом попробуйте, он умеет вроде. По крайней мере, активировать консольное окно и закинуть туда пару-тройку символов сможет.
...
Рейтинг: 0 / 0
14.06.2007, 09:26:08
    #34593623
--null--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Командная строка как послать команду в неё?
либо штатными средствами - WSH WshShell.SendKeys
...
Рейтинг: 0 / 0
14.06.2007, 09:34:38
    #34593643
dartvaider
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Командная строка как послать команду в неё?
rrrrrrrrrrа, вы про посылку команд в окна? nnCron'ом попробуйте, он умеет вроде. По крайней мере, активировать консольное окно и закинуть туда пару-тройку символов сможет.

Крон всё емеет :)
А как логировать тогда результаты работы консоля?
...
Рейтинг: 0 / 0
14.06.2007, 09:37:32
    #34593652
rrrrrrrrrr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Командная строка как послать команду в неё?
перенаправлением его вывода в файл?
...
Рейтинг: 0 / 0
14.06.2007, 09:56:11
    #34593701
dartvaider
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Командная строка как послать команду в неё?
rrrrrrrrrrперенаправлением его вывода в файл?
да!
Чем ?, каким софтом можно это осуществить , кроме CTRL+A;СTRL+C;CTRL+V?
...
Рейтинг: 0 / 0
14.06.2007, 10:12:23
    #34593745
GeT
GeT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Командная строка как послать команду в неё?
dartvaider rrrrrrrrrrперенаправлением его вывода в файл?
да!
Чем ?, каким софтом можно это осуществить , кроме CTRL+A;СTRL+C;CTRL+V?
date /T >> backup.log - будет дописывать в конец
date /T > backup.log - будет каждый раз переписывать
...
Рейтинг: 0 / 0
14.06.2007, 10:12:26
    #34593746
Green2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Командная строка как послать команду в неё?
Перенаправление вывода производится через символы перенаправления:
> - ввод в файл
< - чтение из файла
| - перенаправить ввод другой программе
Примеры:
ipconfog /all > c:/ipconf.txt

ipconfog /all | more
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
14.06.2007, 10:26:24
    #34593789
rrrrrrrrrr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Командная строка как послать команду в неё?
тынц на подробный хелп по перенаправлению.
Только вот у меня стандартно не вышло направить и в файл, и на консоль и вроде как народ для этого использует юниксовый tee.exe
А без вывода на консоль автор вроде как не сможет туда команды закидывать?
...
Рейтинг: 0 / 0
14.06.2007, 10:39:49
    #34593843
dartvaider
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Командная строка как послать команду в неё?
Green2Перенаправление вывода производится через символы перенаправления:
> - ввод в файл
< - чтение из файла
| - перенаправить ввод другой программе
Примеры:
ipconfog /all > c:/ipconf.txt

ipconfog /all | more
Posted via ActualForum NNTP Server 1.4
Пытаюсь залогировать консольное приложение
YSM ICQ - You Sick Me - ICQ Client

http://]http://sourceforge.net/project/downloading.php?groupname=ysmv7&filename=ysmv7_2_9_9_1-win32.zip&use_mirror=belnet

, ошибку выдает:

*** Error: getline(): not interactive, use stdio.
...
Рейтинг: 0 / 0
14.06.2007, 10:48:16
    #34593875
dboev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Командная строка как послать команду в неё?
в справке Win32 Help к дэльфе есть такой пример

Creating a Child Process with Redirected Input and Output
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
#include <stdio.h>  
#include <windows.h> 
 
#define BUFSIZE  4096  
 
HANDLE hChildStdinRd, hChildStdinWr, hChildStdinWrDup, 
   hChildStdoutRd, hChildStdoutWr, hChildStdoutRdDup, 
   hInputFile, hSaveStdin, hSaveStdout; 
 
BOOL CreateChildProcess(VOID); 
VOID WriteToPipe(VOID); 
VOID ReadFromPipe(VOID); 
VOID ErrorExit(LPTSTR); 
VOID ErrMsg(LPTSTR, BOOL); 
 
DWORD main(int argc, char *argv[]) 
{ 
   SECURITY_ATTRIBUTES saAttr; 
   BOOL fSuccess; 
 
// Set the bInheritHandle flag so pipe handles are inherited. 

 
   saAttr.nLength = sizeof(SECURITY_ATTRIBUTES); 
   saAttr.bInheritHandle = TRUE; 
   saAttr.lpSecurityDescriptor = NULL; 
 
   // The steps for redirecting child process's STDOUT: 
   //     1. Save current STDOUT, to be restored later. 
   //     2. Create anonymous pipe to be STDOUT for child process. 
   //     3. Set STDOUT of the parent process to be write handle of 
   //        the pipe, so it is inherited by the child process. 
   //     4. Create a noninheritable duplicate of the read handle and

   //        close the inheritable read handle. 
 
// Save the handle to the current STDOUT. 
 
   hSaveStdout = GetStdHandle(STD_OUTPUT_HANDLE); 
 
// Create a pipe for the child process's STDOUT. 
 
   if (! CreatePipe(&hChildStdoutRd, &hChildStdoutWr, &saAttr,  0 )) 
      ErrorExit("Stdout pipe creation failed\n"); 
 
// Set a write handle to the pipe to be STDOUT. 
 
   if (! SetStdHandle(STD_OUTPUT_HANDLE, hChildStdoutWr)) 
      ErrorExit("Redirecting STDOUT failed"); 

 
// Create noninheritable read handle and close the inheritable read 
// handle. 

    fSuccess = DuplicateHandle(GetCurrentProcess(), hChildStdoutRd,
        GetCurrentProcess(), &hChildStdoutRdDup ,  0 ,
        FALSE,
        DUPLICATE_SAME_ACCESS);
    if( !fSuccess )
        ErrorExit("DuplicateHandle failed");
    CloseHandle(hChildStdoutRd);

   // The steps for redirecting child process's STDIN: 
   //     1.  Save current STDIN, to be restored later. 

   //     2.  Create anonymous pipe to be STDIN for child process. 
   //     3.  Set STDIN of the parent to be the read handle of the 
   //         pipe, so it is inherited by the child process. 
   //     4.  Create a noninheritable duplicate of the write handle, 
   //         and close the inheritable write handle. 
 
// Save the handle to the current STDIN. 
 
   hSaveStdin = GetStdHandle(STD_INPUT_HANDLE); 
 
// Create a pipe for the child process's STDIN. 

 
   if (! CreatePipe(&hChildStdinRd, &hChildStdinWr, &saAttr,  0 )) 
      ErrorExit("Stdin pipe creation failed\n"); 
 
// Set a read handle to the pipe to be STDIN. 
 
   if (! SetStdHandle(STD_INPUT_HANDLE, hChildStdinRd)) 
      ErrorExit("Redirecting Stdin failed"); 
 
// Duplicate the write handle to the pipe so it is not inherited. 
 
   fSuccess = DuplicateHandle(GetCurrentProcess(), hChildStdinWr, 
      GetCurrentProcess(), &hChildStdinWrDup,  0 , 
      FALSE,                  // not inherited 

      DUPLICATE_SAME_ACCESS); 
   if (! fSuccess) 
      ErrorExit("DuplicateHandle failed"); 
 
   CloseHandle(hChildStdinWr); 
 
// Now create the child process. 
 
   if (! CreateChildProcess()) 
      ErrorExit("Create process failed"); 
 
// After process creation, restore the saved STDIN and STDOUT. 
 
   if (! SetStdHandle(STD_INPUT_HANDLE, hSaveStdin)) 
      ErrorExit("Re-redirecting Stdin failed\n"); 
 
   if (! SetStdHandle(STD_OUTPUT_HANDLE, hSaveStdout)) 

      ErrorExit("Re-redirecting Stdout failed\n"); 
 
// Get a handle to the parent's input file. 
 
   if (argc > 1) 
      hInputFile = CreateFile(argv[1], GENERIC_READ, 0, NULL, 
         OPEN_EXISTING, FILE_ATTRIBUTE_READONLY, NULL); 
   else 
      hInputFile = hSaveStdin; 
 
   if (hInputFile == INVALID_HANDLE_VALUE) 
      ErrorExit("no input file\n"); 
 
// Write to pipe that is the standard input for a child process. 
 
   WriteToPipe(); 
 
// Read from pipe that is the standard output for child process. 

 
   ReadFromPipe(); 
 
   return 0; 
} 
 
BOOL CreateChildProcess() 
{ 
   PROCESS_INFORMATION piProcInfo; 
   STARTUPINFO siStartInfo; 
 
// Set up members of STARTUPINFO structure. 
 
   ZeroMemory( &siStartInfo, sizeof(STARTUPINFO) );
   siStartInfo.cb = sizeof(STARTUPINFO); 
 
// Create the child process. 
 
   return CreateProcess(NULL, 
      "child",       // command line 
      NULL,          // process security attributes 
      NULL,          // primary thread security attributes 

      TRUE,          // handles are inherited 
      0,             // creation flags 
      NULL,          // use parent's environment 
      NULL,          // use parent's current directory 
      &siStartInfo,  // STARTUPINFO pointer 
      &piProcInfo);  // receives PROCESS_INFORMATION 
}
 
VOID WriteToPipe(VOID) 
{ 
   DWORD dwRead, dwWritten; 
   CHAR chBuf[BUFSIZE]; 
 
// Read from a file and write its contents to a pipe. 
 
   for (;;) 
   { 
      if (! ReadFile(hInputFile, chBuf, BUFSIZE, &dwRead, NULL) || 

         dwRead == 0) break; 
      if (! WriteFile(hChildStdinWrDup, chBuf, dwRead, 
         &dwWritten, NULL)) break; 
   } 
 
// Close the pipe handle so the child process stops reading. 
 
   if (! CloseHandle(hChildStdinWrDup)) 
      ErrorExit("Close pipe failed\n"); 
} 
 
VOID ReadFromPipe(VOID) 
{ 
   DWORD dwRead, dwWritten; 
   CHAR chBuf[BUFSIZE]; 
   HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE); 

// Close the write end of the pipe before reading from the 

// read end of the pipe. 
 
   if (!CloseHandle(hChildStdoutWr)) 
      ErrorExit("Closing handle failed"); 
 
// Read output from the child process, and write to parent's STDOUT. 
 
   for (;;) 
   { 
      if( !ReadFile( hChildStdoutRdDup, chBuf, BUFSIZE, &dwRead, 
         NULL) || dwRead ==  0 ) break; 
      if (! WriteFile(hSaveStdout, chBuf, dwRead, &dwWritten, NULL)) 
         break; 
   } 
} 
 
VOID ErrorExit (LPTSTR lpszMessage) 
{ 
   fprintf(stderr, "%s\n", lpszMessage); 

   ExitProcess( 0 ); 
} 
 
// The code for the child process. 

#include <windows.h> 
#define BUFSIZE  4096  
 
VOID main(VOID) 
{ 
   CHAR chBuf[BUFSIZE]; 
   DWORD dwRead, dwWritten; 
   HANDLE hStdin, hStdout; 
   BOOL fSuccess; 
 
   hStdout = GetStdHandle(STD_OUTPUT_HANDLE); 
   hStdin = GetStdHandle(STD_INPUT_HANDLE); 
   if ((hStdout == INVALID_HANDLE_VALUE) || 
      (hStdin == INVALID_HANDLE_VALUE)) 
      ExitProcess( 1 ); 
 
   for (;;) 
   { 
   // Read from standard input. 

      fSuccess = ReadFile(hStdin, chBuf, BUFSIZE, &dwRead, NULL); 
      if (! fSuccess || dwRead ==  0 ) 
         break; 
 
   // Write to standard output. 
      fSuccess = WriteFile(hStdout, chBuf, dwRead, &dwWritten, NULL); 
      if (! fSuccess) 
         break; 
   } 
} 
 

я когда-то делал на оснве этого кода управление консольным приложением
...
Рейтинг: 0 / 0
Форумы / Windows [игнор отключен] [закрыт для гостей] / Командная строка как послать команду в неё? / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]