Я могу использовать только vbscript на этом компьютере, я бы хотел отобразить значок в systray.Создание значка systray с помощью vbscript?
Я нашел аналогичный вопрос и ответ, используя VBA. Display new mail icon in Windows taskbar using VBScript
Существует также этот код от Microsoft, который объясняет, как сделать это с помощью VBA How to use the System Tray directly from Visual Basic
Эти решения работают со следующими API вызова
Public Declare Function Shell_NotifyIcon Lib "shell32" _
Alias "Shell_NotifyIconA" _
(ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
Проблема в том, как создать пользователя -пределенный тип в vbscript.
Public Type NOTIFYICONDATA
cbSize As Long
hwnd As Long
uId As Long
uFlags As Long
uCallBackMessage As Long
hIcon As Long
szTip As String * 64
End Type
VBScript имеет только «вариант» для всех переменных, не существует TYPE заявление, чтобы создать такую вещь Shell_NotifyIcon
потребностей.
Я где-то читал возможность использования выражения класса.
Возможно, что-то вроде этого?
Class NOTIFYICONDATA
cbSize
hwnd
uId
uFlags
uCallBackMessage
hIcon
szTip(64)
End Class
Однако я считаю, что мой синтаксис неверен или что объект класса не работает таким образом. Или, может быть, поскольку каждый компонент этого класса является вариантом, а не типом, который Shell_NotifyIcon
ожидает, это не сработает?
Я не против использования уродливого, чтобы заставить vbscript-движок превращать соответствующий объект памяти в вызов API, если есть какой-либо способ?
(В более позднем эпизоде, если мне удастся создать значок systray, я бы хотел получить события click от значка и отобразить контекстное меню (vbscript не имеет объекта формы для создания пользовательских интерфейсов, за исключением крайне ограниченного формы из объектов HTA, которые я предпочитаю не использовать))
В отличие от VBA, вы не можете вызывать Windows API непосредственно в VBScript. Единственный способ сделать это - написать COM-обертку, которая выполняет одну и ту же функцию и вместо этого называет это. – Lankymart