Автор | Сообщение |
|
| постоянный участник
|
Пост N: 5821
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.04.18 20:40. Заголовок: MessageBox после выхода из программы.
Всем привет ! Можно ли повесить MessageBox на экране примерно с таким содержанием "Аварийный выход из программы для обновления!", и чтобы он остался после выхода из программы ? Хотелось бы обойтись без внешнего дополнительного софта. Хочу сделать всем аварийное покидание программы ! Достали тупизмом при обновление программы.
|
|
|
Ответов - 11
[только новые]
|
|
|
| постоянный участник
|
Пост N: 1403
Зарегистрирован: 27.01.07
|
|
Отправлено: 18.04.18 20:48. Заголовок: Может и можно. Но, п..
Может и можно. Но, по-моему, это окно станет неуправляемым. Но это - по-моему...))
|
|
|
|
| постоянный участник
|
Пост N: 5822
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.04.18 21:04. Заголовок: PSP пишет: Но, по-м..
PSP пишет: цитата: | Но, по-моему, это окно станет неуправляемым. |
| Да закрыть его потом и всех делов ! Я встречал такое окно в системе - там было типа перезагрузка системы и таймер...
|
|
|
|
| постоянный участник
|
Пост N: 1805
Зарегистрирован: 17.02.12
|
|
Отправлено: 18.04.18 21:08. Заголовок: Andrey Запусти IE с..
Andrey Запусти IE с нужным текстом и оформлением на html странице
|
|
|
|
| постоянный участник
|
Пост N: 5823
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.04.18 21:15. Заголовок: Вот нагуглил http://..
Вот нагуглил http://developer.alexanderklimov.ru/articles/pinvoke.php Из книги C#. Советы программистам (в сокращении) Программный код, который выполняется под управлением CLR (Common Language Runtime, т. е. общая среда выполнения языков), называется управляемым (managed) кодом. Программный код, выполняющийся вне среды выполнения CLR, называется неуправляемым (unmanaged) кодом. Примером неуправляемого программного кода служат функции Win32 API, компоненты COM, интерфейсы ActiveX. Несмотря на большое количество классов .NET Framework, содержащих множество методов, программисту все равно приходится иногда прибегать к неуправляемому коду. Надо сказать, что число вызовов неуправляемого кода уменьшается с выходом каждой новой версии .NET Framework. Microsoft надеется, что наступит такое время, когда весь код можно будет сделать управляемым и безопасным. Но пока реальность такова, что без вызовов функций Windows API нам пока не обойтись. Но сначала немного теории. Управляемый код .NET Framework может вызывать неуправляемую функцию из DLL (функцию Windows API) при помощи специального механизма Platform Invoke (сокр. P/Invoke). Для того чтобы обратиться к какой-нибудь неуправлямой библиотеке DLL, вы должны преобразовать .NET-объекты в наборы struct, char* и указателей на функции, как того требует язык C. Как сказали бы программисты на своем жаргоне — вам нужно маршалировать параметры. Более подробно о маршалинге (Marshalling) вам следует почитать в документации. Чтобы вызвать DLL-функцию из C#, сначала ее необходимо объявить (программисты, имеющие опыт работы с Visual Basic 6.0, уже знакомы с этим способом). Для этого используется атрибут DllImport: using System.Runtime.InteropServices; public class Win32 { [DllImport("User32.Dll")] public static extern void SetWindowText(IntPtr hwnd, String lpString); } Т.е. получается мне нужно из Харбора вызывать неуправляемую функцию из DLL (функцию Windows API) ! Кто нибудь делал такое ?
|
|
|
|
| постоянный участник
|
Пост N: 5824
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.04.18 21:20. Заголовок: SergKis пишет: Запу..
SergKis пишет: цитата: | Запусти IE с нужным текстом и оформлением на html странице |
| Хороший вариант ! Воспользуюсь если не получиться !
|
|
|
|
| постоянный участник
|
Пост N: 5825
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.04.18 22:21. Заголовок: Можно наверное обойт..
Можно наверное обойтись через: cParam := "User32.Dll ????" ShellExecute( 0, "Open", "rundll32.exe", cParam,, 3 ) Только вот не нашёл как сделать параметры правильно... Может кто подскажет как, или нельзя так сделать ?
|
|
|
|
| |
Пост N: 6807
Зарегистрирован: 17.05.05
|
|
Отправлено: 18.04.18 22:24. Заголовок: Andrey Прога сетева..
Andrey Прога сетевая ?
|
|
|
|
| постоянный участник
|
Пост N: 5826
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.04.18 22:32. Заголовок: Dima пишет: Прога с..
Dima пишет: И сетевая и для сервер-терминалов ! Юзера уходят от компа, а кто обновляет - тупит, обновляет при открытых базах. Если бы только у одного заказчика... Выкинуть всех могу, а сообщения на экране не будет... Юзера тогда будут в Ауте !
|
|
|
|
| |
Пост N: 6808
Зарегистрирован: 17.05.05
|
|
Отправлено: 19.04.18 09:29. Заголовок: Andrey Может это че..
Andrey Может это чем то поможет C:\MiniGUI\SAMPLES\BASIC\MsgBoxEx\
|
|
|
|
| |
Пост N: 6809
Зарегистрирован: 17.05.05
|
|
Отправлено: 19.04.18 13:08. Заголовок: Похоже из командной ..
Похоже из командной строки не получится нормально запустить MessageBoxA cParam := "User32.Dll,MessageBoxA 111 222 333" А вот через DllCall можно , но этот вариант я так понял не подходит DllCall( "user32.dll", DLL_OSAPI, "MessageBoxA", 0, "Hello world!", "Harbour sez", hb_bitOr( MB_OKCANCEL, MB_ICONEXCLAMATION, MB_HELP ) ) Можно через msg повесить месагу Скрытый текст MSG {<пользователь> | <имя сеанса> | <ID сеанса> | @<имя файла> | *} [/SERVER:<сервер>] [/TIME:<секунд>] [/V] [/W] [<сообщение>] <пользователь> Имя пользователя. <имя сеанса> Имя сеанса. <ID сеанса> Идентификатор сеанса. @<имя файла> Файл, содержащий список имен пользователей, сеансов или идентификаторов сеансов, которым отправляется сообщение. * Отправить сообщение всем сеансам на указанном сервере. /SERVER:<сервер> Сервер (по умолчанию - текущий). /TIME:<секунд> Интервал ожидания подтверждения от получателя. /V Отображение информации о выполненных действиях. /W Ожидание ответа от пользователя, полезно вместе с /V. <сообщение> Отправляемое сообщение. Если не указано, выдается запрос или принимается ввод из STDIN.
|
|
|
|
|
| постоянный участник
|
Пост N: 5828
Зарегистрирован: 12.09.06
|
|
Отправлено: 19.04.18 15:16. Заголовок: Dima пишет: А вот ч..
Dima пишет: цитата: | А вот через DllCall можно , но этот вариант я так понял не подходит |
| Если сообщение остаётся после выхода из программы, то подходит !
|
|
|
|