|
Imports System.Runtime.InteropServices
Public Enum LboxEnumShowWindow
SW_HIDE = 0
SW_SHOWNORMAL = 1
SW_NORMAL = 1
SW_SHOWMINIMIZED = 2
SW_SHOWMAXIMIZED = 3
SW_MAXIMIZE = 3
SW_SHOWNOACTIVATE = 4
SW_SHOW = 5
SW_MINIMIZE = 6
SW_SHOWMINNOACTIVE = 7
SW_SHOWNA = 8
SW_RESTORE = 9
SW_SHOWDEFAULT = 10
SW_FORCEMINIMIZE = 11
SW_MAX = 11
End Enum
Public Class LboxPrint
' ****************************************
' DLL 動的読み込み用
' ****************************************
<DllImport("kernel32.dll", CharSet:=CharSet.Auto)> _
Private Shared Function LoadLibraryA( _
<MarshalAs(UnmanagedType.LPStr)> ByVal DllName As String _
) As Integer
End Function
<DllImport("kernel32.dll", CharSet:=CharSet.Auto)> _
Private Shared Function FreeLibrary( _
ByVal hModule As Integer _
) As Integer
End Function
<DllImport("kernel32.dll", CharSet:=CharSet.Auto)> _
Private Shared Function GetProcAddress( _
ByVal hModule As Integer, _
<MarshalAs(UnmanagedType.LPStr)> ByVal lpProcName As String _
) As Integer
End Function
' ****************************************
' デスクトップのウインドウハンドル
' ****************************************
<DllImport("user32.dll", CharSet:=CharSet.Auto)> _
Private Shared Function GetDesktopWindow() As Integer
End Function
Delegate Sub PrintUIEntryW( _
ByVal hwnd As Int32, _
ByVal hinst As Int32, _
<MarshalAs(UnmanagedType.LPWStr)> ByVal text As String, _
ByVal nCmdShow As Int32)
' ****************************************
' コマンド実行
' ****************************************
Public Sub PrintUI( _
ByVal command As String, _
Optional ByVal nType As Integer = LboxEnumShowWindow.SW_SHOW)
Dim hModule As Integer = LoadLibraryA("printui.dll")
' ********************************************************
' 実行
' ********************************************************
Dim ptr As IntPtr
ptr = GetProcAddress(hModule, "PrintUIEntryW")
If ptr <> IntPtr.Zero Then
Dim func1 As PrintUIEntryW = _
Marshal.GetDelegateForFunctionPointer(ptr, _
GetType(PrintUIEntryW) _
)
Call func1(GetDesktopWindow(), hModule, command, nType)
End If
End Sub
End Class
| |