|
|
|
pipe в Win98
|
|||
|---|---|---|---|
|
#18+
Здравствуйте Все! Дано: есть программа А под DOS, ее пользовательский интерфейс очень не френдли, исходников ее нет, работает только под Win98, переписать ее функционал нереал в силу определенных адекватных причин. Задача: написать программу Б, которая будет управлять программой А, но будет еще и другие функции выполнять и иметь красивый пользовательский интерфейс. Я написала программу Б' пока консольную, чтобы научиться работать с pipe. Теперь, у меня есть консольная Б' оболочка программы А, которая ей и управляет. Но! я это все запрогала под WinXP, а под Win98 эта программа не работает. Стала разбираться: 1. я перенаправляю поток ввода, задавая указатель на HANDLE созданного pipe, в этот pipe я пишу WriteFile нужные символы. Почему именно так: потому что если не создавать pipe а создавать HANDLE by CreateFile, то когда заканчивается поток из файла, программа А закрывается, не доделав работу. А если создать pipe, то его я закрываю CloseHandle через секунд 30, чтобы программа А все успела сделать. 2. в Win98 если я делаю CreateFile то данные из него отправляются в А, но она рано закрывается. Если я делаю CreatePipe то данные в нее вообще не отправляются. 3. почитала MSDN - поняла, что, кажися, в Win98 нет pipe вообще. HELP! что делать? Как можно передать программе А что-то, не закрывая поток при этом? Ух спасибо, что прочли ... Любые идеи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2005, 13:32 |
|
||
|
pipe в Win98
|
|||
|---|---|---|---|
|
#18+
Я написала тестовую программку A' Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Вот код оболочки Б' для A. Код: 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. Итак, я извиняюсь, за неверную постановку проблемы: приведенный код под Win98 работает, но! если вместо A' взять A, то этот же код под Win98 перестает работать, но под WinXP он работает! Теперь, вопрос более четко: что может быть причиной такой работы? Что там в А программе могло быть такого, что под WinXP это работает, а под Win98 нет? (под Win2000 я не проверяла) Есть ли у кого идеи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2005, 16:02 |
|
||
|
pipe в Win98
|
|||
|---|---|---|---|
|
#18+
Вообще говоря, если эту программу можно будет обуздать, только посылая ей поток ввода-вывода, без клавиш, то пайп можно открывать стедствами cmd.exe или command.com, не обязательно программировать на WIN32. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2005, 23:43 |
|
||
|
pipe в Win98
|
|||
|---|---|---|---|
|
#18+
Возможно лучше не 30 секунд ждать, а ждать завершения работы процесса А? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2005, 09:22 |
|
||
|
pipe в Win98
|
|||
|---|---|---|---|
|
#18+
Проблема в том, что эта программа А закрывается сразу же, как заканчивается входящий поток, т.е. когда заканчивается файл, если делать перенаправление, создавая HANDLE by CreateFile, либо из командной строки A.exe < c.txt, а работая с pipe я могу управлять, когда закрывать pipe. Поэтому, я выжидаю время и закрываю pipe, тогда программа А закрывается, и управление возвращается в основной процесс. Почему А так делает (т.е. завершается, не доделав работы) - мне неясно, с этим сейчас и разбираюсь. Причем, код во втором моем посте работает под WinXP и не работает под Win98 для этой программы А (а для А' работает и там и там). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2005, 10:21 |
|
||
|
|

start [/forum/topic.php?fid=57&tid=2032981]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 332ms |

| 0 / 0 |
