Вверх ↑
Этот топик читают: Гость
Ответов: 876
Рейтинг: 101
#1: 2011-02-25 08:52:47 ЛС | профиль | цитата
Не знаю как правильно сказать.
идея такая запускаю я свою программу из консоли или батника.
Если были переданы параметры прога выполняет и выводить в консоле строку о завершение ну и закрывается,
но если нету параметров выводит обычную форму с кнопками итд.

вот как мне ответ в консоль сделать ?


Add(MainForm,2953706,147,224)
{
link(onCreate,13927424:doCompare,[])
}
Add(Application,5949517,245,105)
{
Wait=1
}
Add(Message,15780967,371,168)
{
Caption="cool story bro"
link(onMessage,2953706:doClose,[(486,174)(486,90)(104,90)(104,251)])
}
Add(If_else,13927424,259,238)
{
link(onFalse,15232493:doRead,[(303,251)(303,213)(240,213)(240,174)])
link(Op1,15232493:Count,[])
}
Add(ArrayRW,15232493,252,168)
{
Index=Integer(0)
Point(Count)
link(onRead,15780967:doMessage,[])
link(Array,5949517:Params,[])
}
карма: 1

0
Ответов: 3349
Рейтинг: 233
#2: 2011-02-25 14:43:58 ЛС | профиль | цитата
code_22687.txt
------------ Дoбавленo в 14.43:
Add(MainForm,2953706,21,105)
{
link(onCreate,13936699:doEvent1,[])
}
Add(InlineCode,16691808,469,119)
{
WorkPoints=#4:Test|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|29:uses kol,Share,Debug,Windows;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|43: procedure Test(var dt:TData; idx:WORD);|5: end;|0:|14:implementation|0:|27:procedure THiAsmClass.Test;|5:begin|13:AllocConsole;|4:end;|0:|4:end.|
}
Add(Console,7873110,420,126)
{
Method=1
}
Add(Hub,13936699,70,119)
{
link(onEvent1,16691808:Test,[])
link(onEvent2,1557566:doStart,[])
}
Add(DoData,11956965,420,189)
{
link(onEventData,9551112:doEvent1,[])
link(Data,7873110:Read,[])
}
Add(Message,14227372,539,196)
{
}
Add(Repeat,4099284,231,133)
{
Op1=Integer(7)
Op2=Integer(7)
link(onRepeat,11956965:doData,[(283,139)(283,195)])
}
Add(Hub,6844703,203,126)
{
link(onEvent1,12088355:doWork2,[])
link(onEvent2,4099284:doRepeat,[])
}
Add(Thread,1557566,98,126)
{
link(onExec,6844703:doEvent1,[])
}
Add(DoData,6437570,322,126)
{
Data=String(Enter message: )
link(onEventData,7873110:doWrite,[])
}
Add(Hub,9551112,469,189)
{
link(onEvent1,12088355:doWork3,[(495,195)(495,165)(298,165)])
link(onEvent2,14227372:doMessage,[])
}
Add(HubEx,12088355,294,126)
{
link(onEvent,6437570:doData,[])
}


карма: 1

0
файлы: 1code_22687.txt [427B] [65]
Ответов: 876
Рейтинг: 101
#3: 2011-02-25 17:53:08 ЛС | профиль | цитата
нето оно создает консоль а не отвечает
cmd-_-bad.png
если я правильно понял нужно использовать AttachConsole функцию, ушел дальше гуглить
карма: 1

0
файлы: 1cmd-_-bad.png [19.8KB] [90]
Ответов: 3851
Рейтинг: 159
#4: 2011-02-25 19:18:08 ЛС | профиль | цитата

flud, используй проект "консольная программа"
карма: 0
начавший
0
Ответов: 876
Рейтинг: 101
#5: 2011-02-25 19:19:06 ЛС | профиль | цитата
Сделал все как хотел, но.. хм (чешу бошку...)
nueprst.png

во общем после выполнения команды мне надо жать enter что бы выполнить команду опять и это не есть хорошо

вот схема

Make(delphi)
ver(4.04 build 185)
Add(MainForm,7889108,224,175)
{
Visible=1
Position=1
Point(doVisible)
link(onCreate,12273419:doEvent1,[])
}
Add(Application,5949517,420,21)
{
Wait=1
}
Add(DoData,3159661,154,203)
{
Data=Integer(1)
link(onEventData,7889108:doVisible,[])
}
Add(Hub,12273419,350,189)
{
OutCount=3
link(onEvent1,13003978:doRead,[(396,195)(396,111)])
link(onEvent2,264602:doLength,[])
link(onEvent3,6143367:doCompare,[(413,209)(413,258)])
}
Add(Length,264602,427,196)
{
link(Str,13003978:Item,[])
}
Add(If_else,6143367,427,252)
{
Op2=Integer(0)
link(onTrue,3159661:doData,[(494,258)(494,158)(117,158)(117,209)])
link(Op1,264602:Result,[])
}
Add(ArrayRW,13003978,427,105)
{
Index=Integer(0)
link(onRead,7864885:doString,[])
link(Array,5949517:Params,[])
}
Add(FormatStr,7864885,511,105)
{
Mask="\r\n%1 command [%2] done"
link(onFString,5793280:doConsoleMsg,[])
link(Str1,9202476:FormatTime,[])
}
Add(Time,9202476,511,56)
{
}
Add(InlineCode,5793280,588,105)
{
WorkPoints=#12:doConsoleMsg|
EventPoints=#12:onConsoleMsg|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|29:uses kol,Share,Debug,Windows;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|1: |27: onConsoleMsg:THI_Event;|4: |56: procedure doConsoleMsg(var _Data:TData; Index:word);|5: end;|0:|14:implementation|0:|35:procedure THiAsmClass.doConsoleMsg;|4:type|68: TAttachConsole = function (dwProcessId: DWORD): LongBOOL stdcall;|3:var|32: AttachConsole: TAttachConsole;|23: mProcessID: Cardinal;|13: Phwnd:HWND;|5:begin|0:|73: Phwnd:=FindWindow(nil, PChar(GetWindowsDir+String('SYSTEM32\CMD.EXE')));|0:|85: @AttachConsole := GetProcAddress(GetModuleHandle('kernel32.dll'), 'AttachConsole');|46: GetWindowThreadProcessId(Phwnd,@mProcessID);|0:|41: if AttachConsole(mProcessID) then begin|26: Write(ToString(_Data));|30: _hi_OnEvent(onConsoleMsg);|15: FreeConsole;|6: end;|5: end;|4:end.|
link(onConsoleMsg,7889108:doClose,[(703,111)(703,12)(212,12)(212,202)])
}

исправил код
карма: 1

0
Ответов: 3851
Рейтинг: 159
#6: 2011-02-25 20:19:52 ЛС | профиль | цитата

flud, пардон - в IC я не полезу, а по теме могу высказать предположение:
работать в DESKTOP, да ещё в семёре - плохая идея (примета такая)..

всё-же, чем тебе консоль не нравится? - всё возвращает..
карма: 0
начавший
0
Ответов: 876
Рейтинг: 101
#7: 2011-02-25 22:28:30 ЛС | профиль | цитата
у консоле нету хендла как у формы, а мне он нужен что бы использовать компонент MemPatch
или может я не нашел
карма: 1

0
Ответов: 3349
Рейтинг: 233
#8: 2011-02-26 10:22:47 ЛС | профиль | цитата
flud писал(а):
или может я не нашел

Не нашел
code_22694.txt
карма: 1

1
файлы: 1code_22694.txt [1.1KB] [115]
Голосовали:flud
8
Сообщение
...
Прикрепленные файлы
(файлы не залиты)