Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
Win32 API の利用について
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30444#CommentId83732
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
KOZ
 (社会人)
投稿日時
2019/12/24 16:37:50
ハンドルは 64bit の OS では 64bit になりますので、System.IntPtr で宣言してください。
API の宣言は pinvoke.net で調べると良いです。
ShellExecute の書き方はこちら
https://www.pinvoke.net/default.aspx/shell32/ShellExecute.html
Declare を使って宣言した場合、文字列を MarshalAs で修飾しないと
日本語文字列を与えたとき、文字列が破壊されるので新しい記法を
使ったほうがいいと思います。
Declare Function MsgBox Lib "user32.dll" Alias "MessageBoxA" _
(ByVal hWnd As IntPtr, ByVal txt As String,
ByVal caption As String, ByVal Typ As Integer) As Integer
Sub Main()
Dim text As String = "字ABC"
MsgBox(IntPtr.Zero, text, vbNullString, 0) ' "字ABC" と表示される
MsgBox(IntPtr.Zero, text, vbNullString, 0) ' "字AB" と表示される
End Sub
Declare を使って文字を破壊しないようにするには
Imports System.Runtime.InteropServices
Declare Function MsgBox Lib "user32.dll" Alias "MessageBoxA" _
(ByVal hWnd As IntPtr,
<MarshalAs(UnmanagedType.LPStr)> ByVal txt As String,
<MarshalAs(UnmanagedType.LPStr)> ByVal caption As String,
ByVal Typ As Integer) As Integer
このように書きます。