powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Простое приложение без GUI выдает свою активность (песочные часики).
25 сообщений из 31, страница 1 из 2
Простое приложение без GUI выдает свою активность (песочные часики).
    #38963298
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
POP3 клиента оформил как отдельный exe: подключился, проверил, скачал, отключился.

Офомил сию cmd-utility как WinForm без Form1.
Т.е. есть модуль, в нем есть main(args) и усе (как привык делать в VB6).
Подключил к проекту, работает все как часики.

Есть проблема. При запуске утилити под current юзером (примерно раз в 20 секунд по имеющейся логике) на экране появляются курсор мыши "песочные часики" (кружочек на 8-ке).
Это доставляет (вирусня так себя ведет обычно).

Можно это как-то побороть?
Переделать в "консоль" м.б.?
Или можно по другому, без переделки?
...
Рейтинг: 0 / 0
Простое приложение без GUI выдает свою активность (песочные часики).
    #38963378
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, консольное приложение решает проблему.
Мышь не кобасит.
Пофиг, все равно hide запускается.

Application.StartupPath только пришлось заменять.

My.Application.Info.DirectoryPath это точный эквивалент (для VB)?

Последнее вроде работает и в WinForm и в Console.


А от чего это зависит ("мышь-часики" при работе проги)? В неконсольном никак нельзя убрать? Мне от консоли в большинстве случаев не жарко ни холодно.
А в ряде случаев она вредна.
Например если GUI нет но MsgBox-ы допустимы, чтоб юзера о чем-то проинформировать. Если Hide, то и Msgbox-ы будут Hide,
а если не Hide то консоль вылезет на экран.
...
Рейтинг: 0 / 0
Простое приложение без GUI выдает свою активность (песочные часики).
    #38963400
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77POP3 клиента оформил как отдельный exe: подключился, проверил, скачал, отключился.

Офомил сию cmd-utility как WinForm без Form1.
Т.е. есть модуль, в нем есть main(args) и усе (как привык делать в VB6).
Подключил к проекту, работает все как часики.

Есть проблема. При запуске утилити под current юзером (примерно раз в 20 секунд по имеющейся логике) на экране появляются курсор мыши "песочные часики" (кружочек на 8-ке).
Это доставляет (вирусня так себя ведет обычно).

Можно это как-то побороть?
Переделать в "консоль" м.б.?
Или можно по другому, без переделки?
Можно. Если wait курсору присвоить значение текущего на старте
...
Рейтинг: 0 / 0
Простое приложение без GUI выдает свою активность (песочные часики).
    #38963429
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79Можно. Если wait курсору присвоить значение текущего на старте
А как предлагаешь это сделать?
Cursors.WaitCursor = Cursors.Default, Cursors.WaitCursor = Cursor.Current -не катит, там же ReadOnly
UseWaitCursor только может заставить его вообще не исчезать,
в описанном случае он появляется сам.
...
Рейтинг: 0 / 0
Простое приложение без GUI выдает свою активность (песочные часики).
    #38963459
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Arm79Можно. Если wait курсору присвоить значение текущего на старте
А как предлагаешь это сделать?
Cursors.WaitCursor = Cursors.Default, Cursors.WaitCursor = Cursor.Current -не катит, там же ReadOnly
UseWaitCursor только может заставить его вообще не исчезать,
в описанном случае он появляется сам.документацию по перечисленным свойствам почитайте
...
Рейтинг: 0 / 0
Простое приложение без GUI выдает свою активность (песочные часики).
    #38963468
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

у меня нет идей как сделать то что ты сказал.
Если не жалко, напиши. Думаю это не больше двух строчек.
...
Рейтинг: 0 / 0
Простое приложение без GUI выдает свою активность (песочные часики).
    #38963469
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77, с телефона долго вставлять ссылку на документацию по Cursor.Current.
...
Рейтинг: 0 / 0
Простое приложение без GUI выдает свою активность (песочные часики).
    #38963474
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

Если имел ввиду Cursor.Current=Cursors.Default в начале main() то это не помогает.
...
Рейтинг: 0 / 0
Простое приложение без GUI выдает свою активность (песочные часики).
    #38963491
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так тоже не помогает:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
 Public Const OCR_WAIT = 32514
  Public Declare Function SetSystemCursor Lib "User32.dll" (ByVal hcur As IntPtr, ByVal id As Integer) As Boolean
  Public Declare Function GetCursor Lib "User32.dll" () As IntPtr


 Sub Main(args As String())
    SetSystemCursor(GetCursor, OCR_WAIT)
...
Рейтинг: 0 / 0
Простое приложение без GUI выдает свою активность (песочные часики).
    #38963582
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем проверку почты делать синхронной? Async/await/Task не спасает отцов русских демократий?
...
Рейтинг: 0 / 0
Простое приложение без GUI выдает свою активность (песочные часики).
    #38963593
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79А зачем проверку почты делать синхронной? Async/await/Task не спасает отцов русских демократий?
Какое это имеет отношение к общему вопросу о WinForm приложении без формы?
В нем может быть что угодно, не обязательно почта.
...
Рейтинг: 0 / 0
Простое приложение без GUI выдает свою активность (песочные часики).
    #38963620
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Arm79А зачем проверку почты делать синхронной? Async/await/Task не спасает отцов русских демократий?
Какое это имеет отношение к общему вопросу о WinForm приложении без формы?
В нем может быть что угодно, не обязательно почта.
Вот я про все и говорю - запускайте в потоке, таске, асинхронно...
...
Рейтинг: 0 / 0
Простое приложение без GUI выдает свою активность (песочные часики).
    #38965909
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Arm79А зачем проверку почты делать синхронной? Async/await/Task не спасает отцов русских демократий?
Какое это имеет отношение к общему вопросу о WinForm приложении без формы?
В нем может быть что угодно, не обязательно почта.а нам-то какое дело, людям, что не превращают библиотеки в "WinForm приложении без формы"? :)

Сами придумали кривое решение, сами с ним и разбирайтесь.
...
Рейтинг: 0 / 0
Простое приложение без GUI выдает свою активность (песочные часики).
    #38965953
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Так тоже не помогает:
за показ этого курсора вроде как отвечает запускающий, а не запускаемый процесс
(STARTF_FORCEOFFFEEDBACK в стартапинфо )

если флаг не указывать - в запускаемом процессе курсор вернётся взад при первом же GetMessage
...
Рейтинг: 0 / 0
Простое приложение без GUI выдает свою активность (песочные часики).
    #38966026
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAа нам-то какое дело, людям, что не превращают библиотеки в "WinForm приложении без формы"? :)
Сами придумали кривое решение, сами с ним и разбирайтесь.

Значит плохо знаете свой предмет:
Шаблоны -> Visual Basic (C#) -> Windows -> Пустой проект
(а потом посмотри какого "типа" это приложение в свойствах проекта)

Хотя каюсь, я выбирал явно первый пункт, а потом удалял форму и "включать исполняющую среду".
Но я думаю это тоже самое, на "пустом проекте" даже без кода в main() колесико-часики все равно крутится при старте.

Это очень стандартная вещь. Нафига мне консоль если я туда ничего не ввожу и ничего там не читаю?
В VB6 например штатно консольных приложений вообще нет.

И нафига мне форма, если я не собираюсь ничего в ней показывать и ничего в нее вводить.

Я так понимаю, сейчас ты спросишь нафига мне приложение которое ничего не показывает и ни о чем не спрашивает?
И сразу сделаешь вывод что оно кривое.

>а нам-то какое дело сами с ним и разбирайтесь
ну если не знаешь, не интересно и не можешь подсказать, зачем чушь писать? да еще в таком стиле

Я разобрался, здесь меня спасла консоль+ hide, консоль это в общем-то тоже стандартный ход.
Но неплохо бы разобраться для "Пустой проект"

====

Изопропил,
спасибо за мысль
гляну позже

>вроде как отвечает запускающий, а не запускаемый процесс
честно, не уверен
но только если просто тыкнуть в exe то будет тоже самое.
при запуске "консоли" и при запуске аналогичных по структуре проектов VB6 "точно таким же образом" такого эффекта нет.
Возможно это связано с механизмами .Net- "среды" для данного типа проектов.
При одиночных, редких, стандартных запусках конечно это не напрягает, но не при Hide-запусках, когда я даже мышкой не щелкал.
...
Рейтинг: 0 / 0
Простое приложение без GUI выдает свою активность (песочные часики).
    #38966047
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
хотя знаешь, немножко извини
Дмитрий77Значит плохо знаете свой предмет:
Шаблоны -> Visual Basic (C#) -> Windows -> Пустой проект.
В VB.Net это будет Windows Form
а
в C# это будет на выбор Console либо "Приложение Windows".

Ты же на C# пишешь, поэтому ты и вопроса не понял, и тебе это дикостью показалось.
В C# возможно на "Приложение Windows" этого эффекта и нет вовсе.
...
Рейтинг: 0 / 0
Простое приложение без GUI выдает свою активность (песочные часики).
    #38966058
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77честно, не уверен
попробуй документацию почитать
...
Рейтинг: 0 / 0
Простое приложение без GUI выдает свою активность (песочные часики).
    #38966099
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,
ну я почитал, звучит то похоже.

А как это протестировать?
Я то обычно вызываю либо через VB-шный Shell,
либо через Process.Start(ExecInfo)
но это ShellExecute(Ex)
а то о чем ты говоришь это CreateProcess, и я этим пользоваться не люблю.

И потом в случае .Net "вызывающей" наверняка является .Net-среда, а не мое другое приложение.

Мне то хочется что-то поменять в самом .exe а не ковыряться с вызывающим приложением.
Вызывающее одинаково "вызывает" и консоль и WinForm (это с точки зрения вызывающего).
А вот .Net который их реально вызывает, делает это точно по разному и с пристрастием.
...
Рейтинг: 0 / 0
Простое приложение без GUI выдает свою активность (песочные часики).
    #38966238
Фотография Шайтан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Я так понимаю, сейчас ты спросишь нафига мне приложение которое ничего не показывает и ни о чем не спрашивает?


а действительно - нафига?
оформи вин-сервис и никаких часиков :)
...
Рейтинг: 0 / 0
Простое приложение без GUI выдает свою активность (песочные часики).
    #38966264
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77skyANAа нам-то какое дело, людям, что не превращают библиотеки в "WinForm приложении без формы"? :)
Сами придумали кривое решение, сами с ним и разбирайтесь.

Значит плохо знаете свой предмет:
Шаблоны -> Visual Basic (C#) -> Windows...Есть такой шаблон как Class Library :)
...
Рейтинг: 0 / 0
Простое приложение без GUI выдает свою активность (песочные часики).
    #38966295
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шайтана действительно - нафига?
оформи вин-сервис и никаких часиков :)Нафига?

Консольное приложение + Windows Scheduler
...
Рейтинг: 0 / 0
Простое приложение без GUI выдает свою активность (песочные часики).
    #38966423
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77а то о чем ты говоришь это CreateProcess, и я этим пользоваться не люблю.
если нужно решить задачу - придётся полюбить

Дмитрий77И потом в случае .Net "вызывающей" наверняка является .Net-среда, а не мое другое приложение.
ещё четверг и пятница - ты ж любитель API - вызывай (никто не мешает посмотреть исходники среды)

Дмитрий77Мне то хочется что-то поменять в самом .exe а не ковыряться с вызывающим приложением.
GetMessage нужно вызвать максимально быстро после старта(так как очередь может быть пустой - положить в неё что либо PostMessage) ну или сходу быстро цикл обработки сообщений запустить(с невидимым окном. которое можно тут же закрыть)

правда курсор всё равно моргнёт
...
Рейтинг: 0 / 0
Простое приложение без GUI выдает свою активность (песочные часики).
    #38966608
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А Cursor.Hide() не работает?
Я сам не пробовал
...
Рейтинг: 0 / 0
Простое приложение без GUI выдает свою активность (песочные часики).
    #38966637
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Value	Meaning
STARTF_FORCEONFEEDBACK
0x00000040
Indicates that the cursor is in feedback mode for two seconds after CreateProcess is called. The Working in Background cursor is displayed (see the Pointers tab in the Mouse control panel utility).
If during those two seconds the process makes the first GUI call, the system gives five more seconds to the process. If during those five seconds the process shows a window, the system gives five more seconds to the process to finish drawing the window.
The system turns the feedback cursor off after the first call to GetMessage, regardless of whether the process is drawing.
STARTF_FORCEOFFFEEDBACK
0x00000080
Indicates that the feedback cursor is forced off while the process is starting. The Normal Select cursor is displayed.
https://msdn.microsoft.com/en-us/library/windows/desktop/ms686331(v=vs.85).aspx
...
Рейтинг: 0 / 0
Простое приложение без GUI выдает свою активность (песочные часики).
    #38966731
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
ИзопропилCat2,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Value	Meaning
STARTF_FORCEONFEEDBACK
0x00000040
Indicates that the cursor is in feedback mode for two seconds after CreateProcess is called. The Working in Background cursor is displayed (see the Pointers tab in the Mouse control panel utility).
If during those two seconds the process makes the first GUI call, the system gives five more seconds to the process. If during those five seconds the process shows a window, the system gives five more seconds to the process to finish drawing the window.
The system turns the feedback cursor off after the first call to GetMessage, regardless of whether the process is drawing.
STARTF_FORCEOFFFEEDBACK
0x00000080
Indicates that the feedback cursor is forced off while the process is starting. The Normal Select cursor is displayed.
https://msdn.microsoft.com/en-us/library/windows/desktop/ms686331(v=vs.85).aspx

Возможно я не правильно понял, но вроде это для процесса, который создает окно.

Впрочем я тоже за то, что бы -
ШайтанДмитрий77Я так понимаю, сейчас ты спросишь нафига мне приложение которое ничего не показывает и ни о чем не спрашивает?


а действительно - нафига?
оформи вин-сервис и никаких часиков :)
...
Рейтинг: 0 / 0
25 сообщений из 31, страница 1 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Простое приложение без GUI выдает свою активность (песочные часики).
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]