Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

[Source] Cambiar el Texto de boton "Inicio" o "start"

Estas en el tema de [Source] Cambiar el Texto de boton "Inicio" o "start" en el foro de Visual Basic clásico en Foros del Web. Hola que tal foreros, les traigo un codigo fuente para cambiar el Boton de "Inicio" o "start" Espero que les sea de utilidad. Se Necesita: ...
  #1 (permalink)  
Antiguo 14/07/2009, 11:56
 
Fecha de Ingreso: mayo-2009
Mensajes: 94
Antigüedad: 15 años
Puntos: 3
[Source] Cambiar el Texto de boton "Inicio" o "start"

Hola que tal foreros, les traigo un codigo fuente para cambiar el Boton de "Inicio" o "start"



Espero que les sea de utilidad.

Se Necesita:
Código:
Una caga de texto (TextBox)
y Un Boton (CommandButton)
Declaramos:
Código:
Private Const WM_SETTEXT = &HC
Private Const WM_GETTEXT = &HD
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function SendMessageSTRING Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long

Public Sub SetStartCaption(str As String)
   Dim StartBar As Long
   Dim StartBarText As Long
   Dim sCaption As String
   StartBar = FindWindow("Shell_TrayWnd", vbNullString)
   StartBarText = FindWindowEx(StartBar, 0&, "button", vbNullString)
   sCaption = Left(str, 5)
   SendMessageSTRING StartBarText, WM_SETTEXT, 256, sCaption
   Exit Sub
   End Sub
y en el Boton:
Código:
SetStartCaption Text1.Text
bueno eso es todo

ahora bien el programa tiene un problema, no se pueden poner mas de 5 o 6 Caracteres por que el Boton de "Inicio" no se "agranda".

hay un pograma que no se si conocen el "StartBtnRenamer" este programa de codigo libre programado en lenguaje Delphi (del cual yo no se nada) cuando uno escrive un texto el boton si se agranda.
Alguien sabe de que manera hacer eso con VB6 para poder asi escrivir textos mas grandes?

Bueno muchas gracias... Desde ya
================================================== ===========
  #2 (permalink)  
Antiguo 14/07/2009, 13:55
 
Fecha de Ingreso: enero-2007
Ubicación: Tingo María - Perú
Mensajes: 399
Antigüedad: 17 años, 3 meses
Puntos: 13
Respuesta: [Source] Cambiar el Texto de boton "Inicio" o "start"

navegando encontre:

Código:
 
TaskBarHandle = FindWindow('Shell_TrayWnd', nil)
GetWindowRect(TaskBarHandle, TaskBarRect);
ReBarWindow32Handle = FindWindowEx(TaskBarHandle, 0, 'ReBarWindow32', nil)
GetWindowRect(ReBarWindow32Handle, ReBarWindow32Rect);
GetWindowRect(FindWindowEx(TaskBarHandle, 0, 'TrayNotifyWnd', nil),TrayNotifyWndRect);
NewLabelWidth = MainForm.Canvas.TextWidth(TrimRight(NewLabel)) + 64;
if NewLabelWidth < StartBtnWidth then
NewLabelWidth = StartBtnWidth;
end if
NewReBarWindow32Width = (TaskBarRect.Right - TaskBarRect.Left) -(TrayNotifyWndRect.Right - TrayNotifyWndRect.Left) - NewLabelWidth
SendMessage(StartHandle, WM_SETTEXT, 0, Integer(@NewLabel))
SetWindowPos(ReBarWindow32Handle, 0, NewLabelWidth + 5, 0,NewReBarWindow32Width, TaskBarRect.Bottom - TaskBarRect.Top, SWP_SHOWWINDOW)
SetWindowPos(StartHandle, 0, 0, 0, NewLabelWidth, StartBtnHeight,SWP_SHOWWINDOW)

adaptandolo un poco a tu codigo obtuve:


Código:
 
Option Explicit
Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type
Private Const SWP_SHOWWINDOW = &H40
Private Const WM_SETTEXT = &HC
Private Const WM_GETTEXT = &HD
Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "User32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function SendMessageSTRING Lib "User32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long
Private Declare Function GetWindowRect Lib "User32" (ByVal hWnd As Long, lpRect As RECT) As Long
Private Declare Sub SetWindowPos Lib "User32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long)
Public Sub SetStartCaption(str As String)
    Dim TaskBarRect As RECT, ReBarWindow32Rect As RECT, TrayNotifyWndRect As RECT
    Dim TaskBarHandle As Long, ReBarWindow32Handle As Long, NewLabelWidth As Long, NewReBarWindow32Width As Long
 
    TaskBarHandle = FindWindow("Shell_TrayWnd", vbNullString)
    Call GetWindowRect(TaskBarHandle, TaskBarRect)
    ReBarWindow32Handle = FindWindowEx(TaskBarHandle, 0, "ReBarWindow32", vbNullString)
    Call GetWindowRect(ReBarWindow32Handle, ReBarWindow32Rect)
    Call GetWindowRect(FindWindowEx(TaskBarHandle, 0, "TrayNotifyWnd", vbNullString), TrayNotifyWndRect)
 
    NewLabelWidth = Len(str) + 64
 
 
    NewReBarWindow32Width = (TaskBarRect.Right - TaskBarRect.Left) - (TrayNotifyWndRect.Right - TrayNotifyWndRect.Left) - NewLabelWidth
 
    Dim StartBar As Long
    Dim StartBarText As Long
    Dim sCaption As String
    StartBar = FindWindow("Shell_TrayWnd", vbNullString)
    StartBarText = FindWindowEx(StartBar, 0&, "button", vbNullString)
    sCaption = Left(str, 255)
 
    SendMessageSTRING StartBarText, WM_SETTEXT, 256, sCaption
    Call SetWindowPos(ReBarWindow32Handle, 0, NewLabelWidth + 5, 0, NewReBarWindow32Width, TaskBarRect.Bottom - TaskBarRect.Top, SWP_SHOWWINDOW)
    Call SetWindowPos(StartBarText, 0, 0, 0, NewLabelWidth, 20, SWP_SHOWWINDOW)
End Sub
Private Sub Command1_Click()
SetStartCaption Text1.Text
End Sub
__________________
Vivir para ser buenos y ser buenos para servir mejor.
  #3 (permalink)  
Antiguo 14/07/2009, 14:18
 
Fecha de Ingreso: mayo-2009
Mensajes: 94
Antigüedad: 15 años
Puntos: 3
Respuesta: [Source] Cambiar el Texto de boton "Inicio" o "start"

Como edito la Altura del boton por que queda a la mitad...? mira


Buenisimo
ahora lo estoy editando unas cosas por que no quedo bien ba a mi me quedo deforme el boton

Última edición por agus0; 14/07/2009 a las 15:34
  #4 (permalink)  
Antiguo 14/07/2009, 15:53
 
Fecha de Ingreso: enero-2007
Ubicación: Tingo María - Perú
Mensajes: 399
Antigüedad: 17 años, 3 meses
Puntos: 13
Respuesta: [Source] Cambiar el Texto de boton "Inicio" o "start"

Fijate esto:

Call SetWindowPos(StartBarText, 0, 0, 0, NewLabelWidth, 20, SWP_SHOWWINDOW)

o si quieres que sea mas exacto caputa la altura con:
GetWindowRect
__________________
Vivir para ser buenos y ser buenos para servir mejor.
  #5 (permalink)  
Antiguo 14/07/2009, 20:45
 
Fecha de Ingreso: mayo-2009
Mensajes: 94
Antigüedad: 15 años
Puntos: 3
Respuesta: [Source] Cambiar el Texto de boton "Inicio" o "start"

Gracias... "32" es el numero correcto, al menos en mi O.S
  #6 (permalink)  
Antiguo 17/07/2009, 17:59
 
Fecha de Ingreso: abril-2009
Mensajes: 7
Antigüedad: 15 años, 1 mes
Puntos: 0
De acuerdo Respuesta: [Source] Cambiar el Texto de boton "Inicio" o "start"

Funciona a la perfeción... Te lo califiqué como asombroso suerte.
  #7 (permalink)  
Antiguo 19/07/2009, 12:09
Avatar de seba123neo  
Fecha de Ingreso: febrero-2007
Ubicación: Esperanza, Santa Fe
Mensajes: 1.046
Antigüedad: 17 años, 2 meses
Puntos: 19
Respuesta: [Source] Cambiar el Texto de boton "Inicio" o "start"

Hola, si bien es bien conocido esto, el codigo esta por todas partes. aparte es bien facil haerlo , pues al ser una ventana le podes hacer lo que quieras como si fuera un form mismo...si mal no recuerdo esta en las FAQ tambien...lo tendrias que poner ahi, si ya no esta...aparte al refrescarse el explorer pierde el efecto...

saludos.
__________________
" Todos Somos Ignorantes; lo que pasa es que no todos ignoramos las mismas cosas " - Albert Einstein
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 10:34.