|
2019/07/18(Thu) 22:33:34 編集(投稿者)
■No91671 (けるん さん) に返信 > PCによって実行できたりできなかったりするのはなぜなのでしょうか?
内部的には、OleCreateIPictureIndirect API への呼び出しになっていそうなので、 実行環境の .NET Framework バージョンもしくは OLEAUT32.DLL のバージョンが 異なっているなどの理由かもしれません。自信なし。 あとは「管理者として実行」「互換モード実行」「セキュリティソフト」で 違いがでるかどうか、という程度。
該当リソースをファイルとして保存して、それをバイナリエディタで開き、 正しいカーソル形式になっているかどうかも確認した方が良いかも。
.cur 形式なら、先頭 4 バイトは 00,00,02,00 のはずですし、 .ico 形式なら、先頭 4 バイトは 00,00,01,00 のはず。 .ani や .svg 形式はそもそも非対応。
Imports System.IO Public Class Form1 Private Declare Auto Function LoadCursorFromFile Lib "user32" (lpFileName As String) As IntPtr
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load TextBox1.Text = "C:\windows\Cursors\aero_busy_xl.ani" End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click '☆ OK Button1.Cursor = New Cursor(LoadCursorFromFile(TextBox1.Text)) End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click '★ NG Button2.Cursor = New Cursor(TextBox1.Text) End Sub
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click '★ NG Dim stm As New MemoryStream(File.ReadAllBytes(TextBox1.Text)) Button3.Cursor = New Cursor(stm) End Sub End Class
|