0

私はスタブを試してみようとしていますが、私が見たすべてのチュートリアルでは、Stub.exe を次のように取得するように指示されています。

FileOpen(1, Application.StartupPath & "\sub.exe", OpenMode.Binary, OpenAccess.Read)

これは後で説明されました:

FileOpen(Reference number, file name including the path, mode to open the file as, Mode Of Access)

プロジェクトのリソースからスタブを入力しようとしていますが、それを行に追加すると(次のようになります:)

FileOpen(1, My.Resources.Stub, OpenMode.Binary, OpenAccess.Read, OpenShare.Default)

次に、赤で下線を引き、次のように述べています。

Type 'Byte の 1 次元配列' の値は 'String' に変換できません。

それが言おうとしているのは、.exeを文字列に入れることができないということだと思いますか? 間違っていたら訂正...

私の完全なコードは以下の通りです:

Public Class Form1
    Const FileSplit As String = "|split|"
    Dim stub, text1, button As String
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim sfd As New SaveFileDialog
        sfd.Filter = "Executables(.exe)|*.exe"
        If sfd.ShowDialog = Windows.Forms.DialogResult.OK Then
            text1 = TextBox1.Text
            button = TextBox2.Text
        Else
            Exit Sub
        End If

        FileOpen(1, My.Resources.Stub, OpenMode.Binary, OpenAccess.Read, OpenShare.Default)
        stub = Space(LOF(1))
        FileGet(1, stub)
        FileClose(1)

        FileOpen(1, sfd.FileName, OpenMode.Binary, OpenAccess.ReadWrite, OpenShare.Default)
        FilePut(1, stub & FileSplit & text1 & FileSplit & button)
        FileClose(1)

        MsgBox("Success")
    End Sub
End Class
4

2 に答える 2

0

コードを使用して、スタブをリソースからアプリケーションのスタートアップ フォルダーにコピーします。コードを使用して、「フォーム ロード」でスタブをコピーします。そのため、アプリを転送するたびに、アプリを開くとすぐにスタブも存在します。

于 2013-02-24T06:09:38.253 に答える
0

このコードを使用してください:これは私のバインダーで動作します、私はこれを使用しています...このコードをあなたのフォームに入れます

 If My.Computer.FileSystem.FileExists(Application.StartupPath & "\stub.exe") = False Then
        IO.File.WriteAllBytes(Application.StartupPath & "\stub.exe", My.Resources.stub)
    End If
于 2013-02-24T06:14:07.670 に答える