|
Может ли быть Консольным или WinForm в зависимости от параметра?
|
|||
---|---|---|---|
#18+
EoltИзопропил, а в чем проблема? 1) с readonly носителем, записью в Program Flles 2) запуском нескольких экзкемпляров приложения PS существование java.exe и javaw.exe не смущает? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 10:52 |
|
Может ли быть Консольным или WinForm в зависимости от параметра?
|
|||
---|---|---|---|
#18+
подписывайте свои продукты ЭЦП, и антивирусы не будут ругаться ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 11:33 |
|
Может ли быть Консольным или WinForm в зависимости от параметра?
|
|||
---|---|---|---|
#18+
Roman Mejtesподписывайте свои продукты ЭЦП, и антивирусы не будут ругаться Да, только после патчинга хидера ЭЦП превращается в тыкву. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 11:36 |
|
Может ли быть Консольным или WinForm в зависимости от параметра?
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныRoman Mejtesподписывайте свои продукты ЭЦП, и антивирусы не будут ругаться Да, только после патчинга хидера ЭЦП превращается в тыкву. Подпись тоже можно патчить ))) Тут главный минус в том что ЭЦП штука не дешевая. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 12:15 |
|
Может ли быть Консольным или WinForm в зависимости от параметра?
|
|||
---|---|---|---|
#18+
ИзопропилEoltИзопропил, а в чем проблема? 1) с readonly носителем, записью в Program Flles Есть много решений: AppData, копирование второго экзешника в Temp и т.д. автор2) запуском нескольких экзкемпляров приложения PS существование java.exe и javaw.exe не смущает? Не вижу никаких проблем ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 13:48 |
|
Может ли быть Консольным или WinForm в зависимости от параметра?
|
|||
---|---|---|---|
#18+
Видимо я пока остановлюсь на варианте WinForm + ключ /Console + AllocConsole/AttachConsole. Это даст возможность безболезненно дописать единую логику в зависимости от Не консоль/Консоль (пока что сделано как "не консоль"). Ну а дальше подумаю. Либо 2 exe, либо "Консольное приложение" + FreeConsole на старте. Патчить заголовок - однозначно дурной вариант. ЭЦП Code Signing имеется, в продакшн все подписывается, но причем тут это. От вирусовантивирусов кстати не всегда спасает. Но не об этом речь. Здесь еще такой важный момент. Кроме того что "Консольное" рисует черную консоль и чего-то туда пишет, оно еще берет управление на себя до своего завершения. То которое "GUI" возвращает управление сразу. Метод с AttachConsole не обеспечивает "корректной консоли" в случае cmd. Т.е. вроде как приаттачились и туда пишет, а управление уже передано в командную строку, даже "Press Any key..." не нажмешь. К слову, "нормальный вариант" ("Консольное приложение" + FreeConsole на старте) кроме "мелькания консоли", еще и этим требованиям не удовлетворяет. Управление не будет передано в cmd сразу после FreeConsole, консоль будет ждать полного завершения "всех GUI". Метод с AttachConsole обеспечит невозврат управления ("корректную консоль"), если его из cmd запускать start /w proga.exe Теоретически можно написать маленькую "прокладку" на VB6, где требуемый функционал случайно или нарочно поддерживается. Прокладка будет играть роль "start /w". Т.е. если у меня нет ключа /Console, VB6 просто запускает .Net-exe и выходит Если у меня ключ /Console, то VB6 делает AllocConsole (случайно или нарочно это в VB6 будет работать как грамотный AttachConsole без возврата управления в cmd), запускает .Net-exe которое делает AttachConsole к родительскому VB6 процессу. Но, при этом VB6-прокладка надо думать должна быть запущена до окончания работы .Net-exe (бесконечный цикл с DoEvents с проверкой завершился ли .Net-exe ? Псевдозагрузка процессора из-за цикла уже не есть good). Ну, естественно, такой вариант не может сильно нравится, хотя он и обеспечит видимость и функциональность требуемого. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 16:07 |
|
Может ли быть Консольным или WinForm в зависимости от параметра?
|
|||
---|---|---|---|
#18+
Дмитрий77Теоретически можно написать маленькую "прокладку" на VB6, где требуемый функционал случайно или нарочно поддерживается. случайно или нарочно это в VB6 будет работать как грамотный AttachConsole без возврата управления в cmd Короче не получится, соврал, забыл, ничего там такого нет и не было и все то же самое. В VB6 у меня был грубо такой код: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8.
При написании/тестировании это было НЕ консольное приложение, но наличие AllocConsole позволяло тестировать его как консольное на этапе написания. А под конец делалось вот это: Код: vbnet 1.
Что превращало его в то что в .Net называется тип проекта="Консольное приложение" (в VB6 в проекте это задать нельзя). После патча AllocConsole/FreeConsole теряют смысл, хотя и не мешают. И да, был ключ /NoConsole, но он просто отменял вывод в консоль всякой всячины, но даже не закрывал саму консоль и тем более не менял тип приложения. Исходя из того что хочу сейчас, получается ДА, только 2 exe-шника 1) "WinForm"+Main = а)нету консоли б) GUI в) возврат управления сразу 2) "Консольное приложение"= а)консоль б) вывод в консоль в) возврат управления по завершению Код естественно единый. (2) делается из (1) тупо либо сменой типа проекта, либо тем же LINK.exe (что одно и то же). ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2019, 20:55 |
|
Может ли быть Консольным или WinForm в зависимости от параметра?
|
|||
---|---|---|---|
#18+
А чем решение со сменой Subsystem в хеадере не нравится? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2019, 21:09 |
|
Может ли быть Консольным или WinForm в зависимости от параметра?
|
|||
---|---|---|---|
#18+
Roman Mejtesсо сменой Subsystem в хеадере Link.exe если что именно это и делает. Но не на ходу же, вы ж обсуждали выше: подписи (а у меня подписано), антивирусы, очень дурной тон etc.... при этом все равно нужна "прокладка", которая будет решать патчить/не патчить. При этом неконсольная прокладка не приаттачит грамотно к родительской консоли, а консольная будет мигать при запуске вне консоли. Хотя вопрос возврата/невозврата управления через консольную прокладку таки решить можно. FreeConsole не говоря о "мигалке консоли", не решает проблемы возврата управления. AttachConsole, наоборот, не решает проблемы НЕвозврата управления. НЕТ универсального решения. Я б такой вопрос тут задал. Как из кода узнать оно "Консольное" или нет (согласно PE заголовку)? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2019, 22:37 |
|
Может ли быть Консольным или WinForm в зависимости от параметра?
|
|||
---|---|---|---|
#18+
Дмитрий77, тип задаётся при компиляции/сборке. для проктологов - GetModeuleHandle(0) возвращает адрес загруженного образа в памяти, остаётся прочитать поле Subsystem из COFF заголовка ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 09:58 |
|
Может ли быть Консольным или WinForm в зависимости от параметра?
|
|||
---|---|---|---|
#18+
Дмитрий77Я б такой вопрос тут задал. Как из кода узнать оно "Консольное" или нет (согласно PE заголовку)? Спрашивали уже. 20441353 и следующий пост. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 10:56 |
|
Может ли быть Консольным или WinForm в зависимости от параметра?
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныДмитрий77Я б такой вопрос тут задал. Как из кода узнать оно "Консольное" или нет (согласно PE заголовку)? Спрашивали уже. 20441353 и следующий пост. Не слабые простыни, хотя и в моем стиле. Будет настрой, м.б. поковыряю. Но в моем случае при трансформации WinForm->Console App видимо проще поменять одну константу в коде bConsole=FalseTrue, чем ее так "вычислять", потратив денек-другой на освоение этой кухни (без освоения не получится, сколько раз еще в VB6 накалывался брав на веру чужие простыни, а они потом годами/через годы стреляли из за какого-нибудь ByRef вместо ByVal). И потом я еще до конца не решил, как я поступлю с консоль/не консоль, м.б. придет какая оригинальная идея реализации-гибридизации на ум. Пока что у меня сделан WinForm с ключиком /Console который делает Alloc(Attach)Console. Для тестирования и отладки в обоих режимах этого достаточно (на чем и сосредоточен), для грамотного продакшн не годится о чем говорилось выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 06:12 |
|
|
start [/forum/topic.php?fid=20&gotonew=1&tid=1398918]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
138ms |
get topic data: |
10ms |
get first new msg: |
9ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
others: | 260ms |
total: | 505ms |
0 / 0 |