Red de conocimiento informático - Material del sitio web - ¿Cómo hacer que los botones cambien con el tema en programación VB?

¿Cómo hacer que los botones cambien con el tema en programación VB?

Utilice initcommoncontrols en el primer form_initialize o sub main

Private Declare Sub InitCommonControls Lib "COMCTL32" ()

Luego escriba un archivo de manifiesto para este programa

Guardar en la misma carpeta

Por ejemplo, el proyecto 1.exe

se guarda como proyecto 1.exe.manifest

archivo de manifiesto. El contenido es el siguiente

versión="1.0.0.0"

procesadorArquitectura="X86"

nombre="TUNOMBRE"

tipo="win32"

/>

TUDESCRIPCIÓN

type="win32"

name="Microsoft.Windows .Common -Controls"

versión="6.0.0.0"

procesadorArchitecture="X86"

publicKeyToken="6595b64144ccf1df"

idioma = "*"

/>

Simplemente guárdelo con el Bloc de notas

Por supuesto, también puede inyectar recursos de manifiesto en el exe

El código es el siguiente

VERSIÓN 5.00

Comenzar VB.Form Form1

BorderStyle = 1'Fixed Single

Caption = "MANIFEST INYECTOR"

ClientHeight= 3690

ClientLeft= 45

ClientTop = 435

ClientWidth = 4680

LinkTopic = "Form1"

MaxButton = 0 ' Falso

ScaleHeight = 3690

ScaleWidth= 4680

StartUpPosition = 3'

Ventana predeterminada

Comenzar VB.TextBox Texto3

Altura= 270

Izquierda= 480

TabIndex= 3

Arriba = 2520

Ancho = 3615

Fin

Comienzo VB.TextBox Texto2

Alto= 270

Izquierda= 480

TabIndex= 2

Texto= "Nombre de archivo"

Superior = 2880

Ancho = 3855

Fin

Comenzar VB.CommandButton Comando1

Caption = "Inject"

Altura= 375

Izquierda= 960

p>

TabIndex= 1

Superior = 3240

Ancho = 1815

Fin

Comenzar VB.TextBox Texto1

p>

Alto= 2295

Izquierda= 720

MultiLine = -1'True

Barras de desplazamiento= 2'Vertical

TabIndex= 0

Texto= "Form1.frx":0000

Superior = 120

Ancho = 3615

Fin

Fin

Atributo VB_Name = "Form1"

Atributo VB_GlobalNameSpace = False

Atributo VB_Creatable = False

Atributo VB_PredeclaredId = Verdadero

Atributo VB_Exposed = False

Opción explícita

Función de declaración privada BeginUpdateResource Lib "kernel32" Alias ​​​​"BeginUpdateResourceA" (ByVal pFileName As String, ByVal bDeleteExistingResources Mientras) Mientras

Función de declaración privada EndUpdateResource Lib "kernel32" Alias ​​​​"EndUpdateResourceA" (ByVal hUpdate Mientras, ByVal fDiscard Mientras) Mientras

Función de declaración privada UpdateResource Lib "kernel32 " Alias ​​​​"UpdateResourceA" (ByVal hUpdate siempre, lpType mientras, lpName mientras, ByVal wLanguage mientras, lpData como cualquiera, ByVal cbData mientras)

Función de declaración privada FindResource Lib "kernel32" Alias ​​​​"FindResourceA" (Por

Val hInstance mientras, ByVal lpName como cadena, ByVal lpType como cadena) mientras

Función de declaración privada LoadResource Lib "kernel32" (ByVal hInstance mientras, ByVal hResInfo mientras) mientras

Función de declaración privada LockResource Lib "kernel32" (ByVal hResData siempre y cuando)

Función de declaración privada SizeofResource Lib "kernel32" (ByVal hInstance mientras, ByVal hResInfo mientras) siempre

Const LANG_ENGLISH = &H9

Declaración privada Sub InitCommonControls Lib "COMCTL32" ()

Función privada uResM(FName$, stU$)

Dim rHandle Siempre, maniStr As String

rHandle = BeginUpdateResource(FName, False)

maniStr = stU

uResM = UpdateResource(rHandle, ByVal 24, ByVal 1, ByVal 0, ByVal maniStr, Len(maniStr))

EndUpdateResource rHandle, 0

Función final

Subcomando privado1_Click()

Dim rHandle As Long, manifestByteArray() Como Byte, maniStr Como Cadena

Si MsgBox("¿Crear copia de seguridad?", vbYesNo, "Manifest Injector") = vbYes Luego llame a FileCopy(Text2.Text, Text2.Text & "_original.bak")

Si uResM(Text2.Text, Text1.Text) Entonces MsgBox "Done", vbInformation, "Manifest Injector"

End Sub

Sub privado Form_Initialize()

InitCommonControls

End Sub

Sub privado Form_Load()

Si comando <> "" Luego

En caso de error, reanudar siguiente

Atenuar cmd$, st$, leftPars como cadena, ps$()

Atenuar SMode como booleano

Atenuar la copia de seguridad como booleana

SMode = False

Copia de seguridad = True

cmd = Comando

Atenuar iSt mientras

Atenuar iEnd mientras

iSt = InStr(1, cmd, Chr(34))

iEnd = InStr(iSt + 1, cmd, Chr(34))

Si iSt > 0 y iEnd > 0 entonces

st = Mid(cmd, iSt + 1, iEnd - iSt - 1)

Si iSt > 1 Entonces leftPars = Trim(Mid(cmd, iEnd + 1, Len(cmd) - iEnd)): leftPars = leftPars & " " & Trim(Mid(cmd, 1, iSt - 1)) De lo contrario leftPars = Trim(Mid(cmd, iEnd + 1, Len(cmd) - iEnd))

ElseIf iSt > 0 And iEnd = 0 Then

MsgBox "Error de parámetro.", vbCritical, "Error"

Salir de Sub

ElseIf iSt = 0 And iEnd = 0 Entonces

st = Mid(cmd, 1, InStr(1, cmd , " ") - 1)

Si st = "" Entonces st = Mid(cmd, 1, InStr(1, cmd, "/") - 1)

Si st = "" Entonces st = cmd

leftPars = Trim(Mid(cmd, InStr(1, cmd, " "), Len(cmd) - InStr(1, cmd, " ") + 1))

Finalizar si

ps = Split(leftPars, "/")

Atenuar i&

Para i = 0 a UBound(ps )

Seleccione Case Trim(UCase(ps(i)))

Caso "S"

SMode = True

Caso " B"

Copia de seguridad = Verdadero

Caso "NB"

Copia de seguridad = Falso

Finalizar selección

Siguiente i

Si Backup = True entonces llame a FileCopy(st, st & "_original.bak")

Si uResM(st, Text1.Text) y SMode = False entonces

MsgBox "Actualizar recurso correctamente.", vbInformation, "Manifest Injector"

ElseIf SMode = False Then

MsgBox Chr(34) & st & Chr(34) & " UpdateResource falló.", vbInformation, "Manifest Injector"

End If

End

Fin If

End Sub

Guárdalo como un formulario y podrás usarlo. .