お世話になります。
VB6.0→VB2010の移行をしております。
中にメールスロットを使用して通信を行っている部分があり、
その処理の移行で詰まっております。
作成したモジュール:
---------------------
Private Declare Function CreateMailslot Lib "kernel32" Alias "CreateMailslotA" ( _
ByVal lpName as String, _
ByVal nMaxMessageSize As Long, _
ByVal lReadTimeout As Long, _
ByVal lpSecurityAttributes As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Const MAILSLOT_WAIT_FOREVER = (-1)
Private Const WIN_POP_SLOT = "\\.\mailslot\MS6001"
Private P_hMailslot As Long
'メールスロットOPEN
Public Function SlotOpen() As Long
SlotOpen = -1
'前回のクローズチェック
If P_hMailslot <> 0 Then
Call CloseHandle(P_hMailslot)
P_hMailslot = 0
End If
'★ここでエラーになります。
P_hMailslot = CreateMailslot(WIN_POP_SLOT,0,MAILSLOT_WAIT_FOREVER,0)
'......続く
End Function
---------------------
「デバッグ開始」よりコードを実行しており、SlotOpen()関数を呼ぶと、
★部で「AccessViolationExceptionはハンドルされませんでした。保護されているメモリに読み取りまたは書き込み操作を行おうとしました。他のメモリが壊れていることが考えられます。」と
エラーが出ます。
どこかが根本的に違うのだと思うのですが、どなたか切り分けのヒントを頂けませんか。
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
VB6とVB2010では型の大きさが異なります。
・API上でINT/LONG/DWORDなどはInteger型
・API上でハンドルやポインタなどはIntPtr型
にする必要があります。
この回答への補足
ありがとうございます!!無事OPENでき、
その先の情報取得もできているようです。
あとは情報が来た際にReadFileがうまくいくかどうか・・・。
引数にByte型配列があるのです・・・ドキドキ。
アドバイス頂きましてありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Vba Userformを前面に出すについて 3 2022/04/15 12:29
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行時エラー 438になった時の...
-
ACCESS2000VBAでエラー「型が一...
-
エクセルエラー13型が一致しま...
-
excel vbaでレート取得について...
-
実行時エラー3001「引数が間違...
-
ADODB.Streamを使用してUTF-8を...
-
DoEventsは意味ない?
-
なぜエラーになるのでしょうか...
-
【Excel VBA】マクロをボタンに...
-
実行時エラー '32755' [キャン...
-
マクロでのActiveSheet.Pasteで...
-
Application.ActiveInspectorで...
-
VB6+SQL サーバー 2000 で 実行...
-
実行時エラー48発生時のDLL特定...
-
EXCEL VBAマクロ中断でデバッグ...
-
テキストボックスに記述した数...
-
ExcelVBA Range クラスの Page...
-
Excel VBA で End Subのところ...
-
Outlook.ApplicationをCreateOb...
-
エクセルVBAについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー 438になった時の...
-
エクセルエラー13型が一致しま...
-
【Excel VBA】マクロをボタンに...
-
なぜこんな初歩的なVBAのIf文で...
-
マクロについて教えてください...
-
実行時エラー3001「引数が間違...
-
VBAがブレークモードになっ...
-
ExcelVBA Range クラスの Page...
-
VBSで変数の宣言はできないので...
-
VBS実行時エラー オブジェクト...
-
OLEDB.NETで接続できない
-
プロシージャ名の取得
-
EXCEL VBAマクロ中断でデバッグ...
-
ADODB.Streamを使用してUTF-8を...
-
VBAでのエラー
-
実行時エラー48発生時のDLL特定...
-
Outlook.ApplicationをCreateOb...
-
VB6+SQL サーバー 2000 で 実行...
-
実行時エラー -'-2147417848
-
「コンパイルエラー:プロシー...
おすすめ情報