Форум: "Основная";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];
ВнизОбмен данными между двумя моими приложениями Найти похожие ветки
← →
Comp © (2004-11-07 16:57) [0]Уважаемые мастера. Такой наболевший вопрос: Есть оконное приложение с лабел и кнопкой. Нажимаю на кнопку. Приложение должно запустить некую консоль, передать ей некое число, а консоль должна выяснить, меньше 100 это число или больше 100. Ответ должно вернуть оконному приложению. В лабел отображается "да" или "нет". Ппожалуйта решить эту задачу. Как написать такуб консоль и оконное приложение. Буду очень благодарен.
← →
Defunct © (2004-11-07 18:42) [1]Написал вам небольшой примерчик:
Консоль:program console;
{$APPTYPE CONSOLE}
uses
SysUtils, Messages, Classes, Windows, ExtCtrls;
type
TMyMessanger = class(TComponent)
private
FWindowHandle: HWND;
procedure WndProc(var Msg: TMessage);
public
Done : Boolean;
constructor Create(AOwner: TComponent);override;
destructor Destroy;override;
end;
Constructor TMyMessanger.Create;
begin
inherited Create(AOwner);
FWindowHandle := Classes.AllocateHWnd(WndProc);
SetWindowText( FWindowHandle, "My console");
WriteLn("console is up");
WriteLn("Caption = My console, Handle = ",FWindowHandle);
Done := False
end;
procedure TMyMessanger.WndProc;
begin
with Msg do
if Msg = WM_USER + 50 then
try
/// lalalala
WriteLn("Message has received from WndApplication");
WriteLn("WParam = ",WParam," LParam = ",LParam);
WriteLn("Quiting");
Result := 5555;
Done := True;
except
WriteLn("exception")
end
else
Result := DefWindowProc(FWindowHandle, Msg, wParam, lParam)
end;
destructor TMyMessanger.Destroy;
begin
Classes.DeallocateHWnd(FWindowHandle);
inherited Destroy
end;
var Msg: TMsg;
begin
with TMyMessanger.Create( nil ) do
begin
while not Done do
if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then
begin
TranslateMessage(Msg);
DispatchMessage( Msg )
end
end;
ReadLn;
end.
Оконное приложение:procedure TForm1.Button1Click(Sender: TObject);
var Console : HWND;
Result : Integer;
begin
Console := FindWindow( nil, "My console" );
if Console > 0 then
begin
Result := SendMessage( Console, WM_USER+50, 6777, 7777);
ShowMessage( "Результат от консоли = " + IntToStr(Result) )
end
else
ShowMessage("Консоль не запущена")
end;
← →
Defunct © (2004-11-07 18:49) [2]эээ.. забыл деструктор вызвать. добавьте обязательно.
with TMyMessanger.Create( nil ) do
begin
while not Done do
if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then
begin
TranslateMessage(Msg);
DispatchMessage( Msg )
end;
Free
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.034 c