Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Cómo pasar valor a exe en vb?

¿Cómo pasar valor a exe en vb?

¿Solo 10 puntos?

1. Escriba un "programa de configuración"

Cree un nuevo proyecto, agregue un Texto1 al formulario Form1, luego agregue un Comando1 y escriba el siguiente código en el formulario:

p>

Opción explícita

Const privada szName = "Global\MyFileMappingObject"

Const privada WM_USER = &H400

Const privada INVALID_HANDLE_VALUE = -1

Const privada PAGE_READWRITE = 4

Const privada STANDARD_RIGHTS_REQUIRED = &HF0000

Const privada SECTION_QUERY = &H1

Const privada SECTION_MAP_WRITE = &H2

Const privada SECTION_MAP_READ = &H4

Const privada SECTION_MAP_EXECUTE = &H8

Const privada SECTION_EXTEND_SIZE = &H10

Const privada SECTION_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED o SECTION_QUERY o SECTION_MAP_WRITE o SECTION_MAP_READ o SECTION_ MAP_EXECUTE o SECTION_EXTEND_SIZE

PrivateConst FILE_MAP_ALL_ACCESS = SECTION_ALL_ ACCESS

Función de declaración privada CreateFileMapping Lib "kernel32" alias "CreateFileMappingA" (ByVal hFile As Long, ByVal byVal hFile As Long, ByVal lpFileMappigAttributes mientras, ByVal flProtect mientras, ByVal dwMaximumSizeHigh mientras, ByVal dwMaximumSizeLow mientras, ByVal lpName como cadena) mientras

Función de declaración privada MapViewOfFile Lib "kernel32" (ByVal hFileMappingObject mientras, ByVal dwDesiredAccess Mientras, ByVal dwFileOffsetHigh Mientras, ByVal dwFileOffsetLow Mientras, ByVal dwNumberOfBytesToMap Mientras) Mientras

Función de declaración privada UnmapViewOfFile Lib "kernel32" (lpBaseAddress como cualquiera) Mientras

Privado Declarar función CloseHandle Lib "kernel32" (ByVa

l hObject) Siempre y cuando

Declaración privada Sub CopyMemory Lib "kernel32" Alias ​​​​"RtlMoveMemory" (Destino como cualquiera、

Declaración privada Sub CopyMemory Lib "kernel32" Alias ​​​​"RtlMoveMemory" (Destino como cualquiera, Fuente como cualquiera, Longitud ByVal tan larga)

Función de declaración privada SendMessage Lib "user32" Alias ​​​​"SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Función de declaración privada FindWindow Lib "user32" Alias ​​​​"FindWindowA" (ByVal lpClassName As String、ByVal lpWindowName As String) As Long

Subcomando privado1_Click()

Atenuar hMapFile mientras

Atenuar pBuf mientras

Atenuar szMsg() como byte

Atenuar Buff_Size As Long

Atenuar hwnd1 As Long

Si Text1.Text = "" Entonces salga de Sub

szMsg = StrConv(Text1.Text, vbFromUnicode)

Buff_Size = UBound (szMsg) + 1

hMapFile = CreateFileMapping(INVALID_HANDLE_VALUE, 0, PAGE_READWRITE, 0, Buff_Size, szName)

Si hMapFile <0 entonces

pBuf = MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, Buff_Size)

Si pBuf <> 0 entonces

Llamar a CopyMemory(ByVal pBuf, szMsg(0 ), Buff_Size)

hwnd1 = FindWindow(vbNullString, "Generar programa")

Si hwnd1 <> 0 entonces

Llame a SendMessage(hwnd1, WM_USER, Buff_Size, ByVal 0)

Finalizar si

Llamar a UnmapViewOfFile(pBuf)

Finalizar si

Llamar a CloseHandle(hMapFile)

Finalizar si

End Sub

Sub privado Form_Load()

Me.Caption = "Programa de configuración"

Fin Sub

Guardar en disco, compilar el programa y salir.

El segundo paso es escribir el "generador"

Crea un nuevo proyecto, agrega Texto1 al formulario Form1 y escribe el siguiente código en el formulario:

Opción explícita

Función de declaración privada SetWindowLong Lib "user32" Alias ​​​​"SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Private Sub Form_Load()

Me.hwnd, GWL_WNDPROC, PrevHwnd)

End Sub

Agrega otro módulo Module1 y escribe el siguiente código en el módulo:

Opción explícita

Const privada szName = "Global\MyFileMappingObject"

Const pública GWL_WNDPROC = (-4)

Const privada WM_USER = &H400

Const privada STANDARD_RIGHTS_REQUIRED = & HF0000

Const privada SECTION_QUERY = &H1

Const privada SECTION_MAP_WRITE = &H2

Const privada SECTION_MAP_READ = &H4

Const privada SECTION_MAP_EXECUTE = &H8

Const privada SECTION_EXTEND_SIZE = &H10

Const privada SECTION_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED o SECTION_QUERY o SECTION_MAP_WRITE o SECTION_MAP_READ o SECTION_MAP_EXECUTE o _TAMAÑO

Const privada FILE_MAP_ALL_ACCESS = SECTION_ALL_ACCESS