monrus
							
								Опытный 
								
								 
								  Offline
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									 «  : 02-07-2006 15:22 »   | 
								
								 | 
							  
							 
							Как сделать GUI-оболочку к консольной проге, чтобы можно было передавать в строку некие аргументы. Дайте примеры. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Finch
							
								Спокойный 
								Администратор
								
								 
								  Offline
								Пол:   
								
								Пролетал мимо
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #1 : 02-07-2006 19:24 »   | 
								
								 | 
							  
							 
							monrus, легче к GUI приложению привинтить консоль. Делаеш отдельно два приложения. Из GUI приложения запускаеш консоль и через сокеты или pipe передаеш данные на консоль.  Можно в принципе и консоль напрямую вызывать. Только это надо будет покопаться в MSDN. Я как-то натыкался на статьи по созданию консоли. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							Не будите спашяго дракона.              Джаффар (Коша)  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							zubr
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #2 : 03-07-2006 04:26 »   | 
								
								 | 
							  
							 
							В дельфях делается до безобразия просто: unit Unit1; {$APPTYPE CONSOLE}
  interface
  uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   Dialogs, StdCtrls;
  type   TForm1 = class(TForm)     Button1: TButton;     Edit1: TEdit;     procedure Button1Click(Sender: TObject);   private     { Private declarations }   public     { Public declarations }   end;
  var   Form1: TForm1;
  implementation
  {$R *.dfm}
  procedure TForm1.Button1Click(Sender: TObject); begin  Writeln('Eto stroka Edit1: ', Edit1.Text); end;
  end.  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Последнее редактирование: 06-12-2007 18:55 от Алексей1153++ »
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							monrus
							
								Опытный 
								
								 
								  Offline
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #3 : 03-07-2006 15:12 »   | 
								
								 | 
							  
							 
							Боюсь, мы друг друга не поняли. Приведу пример: все вы знаете прогу UPX, которая работает ч/з командную строку. Как, например, к ней сделать оболочку, чтобы можно было передавть ей различные аргументы. или оболочка к компилятору, к примеру. Меня просто интересует как это все работает. Спасибо, что помогаете. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Finch
							
								Спокойный 
								Администратор
								
								 
								  Offline
								Пол:   
								
								Пролетал мимо
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #4 : 03-07-2006 16:29 »   | 
								
								 | 
							  
							 
							Вот пример из  MSDN, Как это делать    
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							Не будите спашяго дракона.              Джаффар (Коша)  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							monrus
							
								Опытный 
								
								 
								  Offline
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #5 : 03-07-2006 17:00 »   | 
								
								 | 
							  
							 
							А на дельфи   ?  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Finch
							
								Спокойный 
								Администратор
								
								 
								  Offline
								Пол:   
								
								Пролетал мимо
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #6 : 03-07-2006 17:33 »   | 
								
								 | 
							  
							 
							
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							Не будите спашяго дракона.              Джаффар (Коша)  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							x77
							
								Модератор
								
								 
								  Offline
								Пол:   
								
								меняю стакан шмали на обратный билет с Марса.
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									«  Ответ #7 : 04-07-2006 14:39 »    | 
								
								 | 
							  
							 
							
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							monrus
							
								Опытный 
								
								 
								  Offline
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #8 : 04-07-2006 15:27 »   | 
								
								 | 
							  
							 
							Блин не понимаю. Дайте пример реальной программы. Please. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							x77
							
								Модератор
								
								 
								  Offline
								Пол:   
								
								меняю стакан шмали на обратный билет с Марса.
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #9 : 04-07-2006 15:47 »   | 
								
								 | 
							  
							 
							monrus, по ссылке приведён готовый код реальной программы, которая запускает ping 127.0.0.1 и выводит результат её работы в TMemo. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							monrus
							
								Опытный 
								
								 
								  Offline
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #10 : 04-07-2006 16:50 »   | 
								
								 | 
							  
							 
							Она у меня не работает, хоть тупым я себя не считаю. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							monrus
							
								Опытный 
								
								 
								  Offline
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #11 : 04-07-2006 16:51 »   | 
								
								 | 
							  
							 
							там еще и синтаксис чем-то левым заменен 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							monrus
							
								Опытный 
								
								 
								  Offline
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #12 : 04-07-2006 16:53 »   | 
								
								 | 
							  
							 
							х77, пришли мне пожалуйста эту прогу. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							zubr
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #13 : 05-07-2006 04:09 »   | 
								
								 | 
							  
							 
							Может это тебе поможет: const   RETURN_INVALID_HANDLE = MaxInt;   RETURN_EXECUTE_FAILED = MaxInt - 1; 
 
  function ExecuteWait(Command, Params: string; ShowWindow: Word;   Output: TStrings): Cardinal; 
 
      function GetTempFile: string;      var        bFile, bDir: Array [0..255] of char;      begin        GetTempPath(SizeOf(bDir), bDir);        GetTempFileName(bDir, 'tmp', 0, bFile);        Result := bFile;      end; 
 
  var   StartupInfo: TStartupInfo;   ProcessInfo: TProcessInformation;   SecurityAttr: TSecurityAttributes;   hOut: THandle;   tempfile: string;   workingdir: PChar;  begin   ZeroMemory(@StartupInfo, SizeOf(TStartupInfo));   ZeroMemory(@ProcessInfo, SizeOf(TProcessInformation));   ZeroMemory(@SecurityAttr, SizeOf(TSecurityAttributes)); 
 
   tempfile := GetTempFile; 
 
   with SecurityAttr do begin     nLength := SizeOf(TSecurityAttributes);     lpSecurityDescriptor := nil;     bInheritHandle := True;     end; 
 
   hOut := CreateFile(PChar(tempfile), GENERIC_READ or GENERIC_WRITE, 0,  @SecurityAttr,                      CREATE_ALWAYS, FILE_ATTRIBUTE_TEMPORARY, 0); 
 
   if hOut = INVALID_HANDLE_VALUE then     Result := RETURN_INVALID_HANDLE   else begin     with StartupInfo do begin       cb := SizeOf(TStartupInfo);       wShowWindow := ShowWindow;       dwFlags := STARTF_USESHOWWINDOW;       if Assigned(Output) then begin         hStdOutput := hOut;         hStdError := hOut;         hStdInput := GetStdHandle(STD_INPUT_HANDLE);         dwFlags := dwFlags or STARTF_USESTDHANDLES;         end;       end; 
 
     if ExtractFilePath(Command) <> '' then       workingdir := PChar(ExtractFilePath(Command))     else       workingdir := nil; 
 
     if Pos(' ', Command) <> 0 then Command := '"' + Command + '"'; 
 
     if CreateProcess(nil, PChar(Command + ' ' + Params), nil, nil, True, 0,  nil,                      workingdir, StartupInfo, ProcessInfo) then begin       WaitForSingleObject(ProcessInfo.hProcess, INFINITE);       GetExitCodeProcess(ProcessInfo.hProcess, Result);       CloseHandle(ProcessInfo.hProcess);       CloseHandle(ProcessInfo.hThread);       CloseHandle(hOut);       if Assigned(Output) then Output.LoadFromFile(tempfile);       DeleteFile(tempfile);       end     else begin       CloseHandle(hOut);       DeleteFile(tempfile);       Result := RETURN_EXECUTE_FAILED;       end;     end; 
 
  end;  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Последнее редактирование: 06-12-2007 18:56 от Алексей1153++ »
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							monrus
							
								Опытный 
								
								 
								  Offline
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #14 : 07-07-2006 13:32 »   | 
								
								 | 
							  
							 
							дайтн реальные сорцы с выводом в консоль
  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							zubr
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #15 : 07-07-2006 17:10 »   | 
								
								 | 
							  
							 
							Блин, называется дал го..на, давай и ложку   procedure TForm1.Button1Click(Sender: TObject); var   str:TStringList; begin  str:=TStringList.Create;  try   ExecuteWait('ping', '127.0.0.1', SW_HIDE, str);   Memo1.Lines.Assign(str);  finally   str.Free;  end; end;  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Последнее редактирование: 06-12-2007 18:57 от Алексей1153++ »
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							monrus
							
								Опытный 
								
								 
								  Offline
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #16 : 07-07-2006 19:49 »   | 
								
								 | 
							  
							 
							вот пример вашей проги. Но она выводит данные из консоли в мемо. А мне нужно наоборот. чтобы я вводил данные, к примеру, "/?" и эти данные передавались в консольную прогу. Пожалуйста, модифицируйте ее. Очень хочу научиться работать с этим. 
						 | 
					 
					
						
							
								
									 
									
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Finch
							
								Спокойный 
								Администратор
								
								 
								  Offline
								Пол:   
								
								Пролетал мимо
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #17 : 09-07-2006 14:24 »   | 
								
								 | 
							  
							 
							monrus, Ты так нефига не научишся. Это сто пудово. Дали тебе готовые сырци, работаюшие в обратном направлении. Ну так сделай их в прямом. Будет тебе практика, чтобы руку набить и самому понять. Разбирая чужой код, ты не научишся программировать. Пока сам не начнеш писать. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							Не будите спашяго дракона.              Джаффар (Коша)  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							Антон (LogRus)
							
						 | 
						
							
								  | 
								
									
									 « Ответ #18 : 09-07-2006 17:29 »   | 
								
								 | 
							  
							 
							monrus, согласен с Fintch'ем или ты используешь уже полученные данные или фиг ты чему научишься, твоя задача написания front-end интерфейса решается путём подмены потоков ввода вывода у внешней програмы. есть такой вызов dup. есть такой сайт delphikingdom.ru 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Последнее редактирование: 06-12-2007 18:58 от Алексей1153++ »
								 | 
								
									 
									Записан
								 | 
							  
							 
							Странно всё это.... 
						 | 
					 
				 
			 |  
		 
	 | 
	| 
		
		
	 | 
	
		
		
			
				
					
						| 
							zubr
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #20 : 09-07-2006 20:03 »   | 
								
								 | 
							  
							 
							Меня самого данная тема заинтерисовала, был час свободный - сварганил простенький интерпретатор консоли. Описание: 1. Вводишь командную строку в окошко Edit. 2. Нажимаешь кнопку Пуск. 3. В левом Memo отображается вывод консоли. 4. Для ввода данных, вводишь строку в правое Memo и нажимаешь кнопку Ввод. 5. Смотришь, что выводится в левом Memo.
  Проект собран в Delphi6. 
						 | 
					 
					
						
							
								
									 
									
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							monrus
							
								Опытный 
								
								 
								  Offline
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #21 : 10-07-2006 16:15 »   | 
								
								 | 
							  
							 
							zubr, брат, Будь Здоров!  Теперь буду изучать. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							monrus
							
								Опытный 
								
								 
								  Offline
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #22 : 10-07-2006 16:17 »   | 
								
								 | 
							  
							 
							zubr, брат, Будь Здоров!  Теперь буду изучать. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	 |