|
Mostrar Temas
|
Páginas: 1 2 [3] 4
|
22
|
Programación / Programación Visual Basic / Ejecutar un procedimiento, con un MsgBox abierto
|
en: 11 Marzo 2010, 17:03 pm
|
Esto lo he logrado con un SetTimer, pero...
Por ejemplo cuando un MsgBox esta activo, los demás procedimientos se quedan como "Pausa", por ejemplo un Timer, su evento deja de funcionar si un MsgBox esta abierto, aquí hice mi propio timer con SetTimer y KillTimer, que corre aun estando un MsgBox abierto, pues mi duda es:
Como puedo hacer mediante la API, para que un objeto funcione normalmente estando un MsgBox abierto, por ejemplo un Timer1..
Disculpen si no me deje entender tal vez, es que estoy apurado, a la noche aclaro si no me deje entender..
SaluDOS!!!
|
|
|
23
|
Programación / Programación Visual Basic / Problema al Reemplazar archivo de recursos con APIs UpdateResource, etc
|
en: 3 Marzo 2010, 02:35 am
|
Bien, pues llevo usando el mismo code (Mio) para añadir archivos de recursos (nuevos) a los ejecutable, y me funciona bien, pero es la primera vez que intento reemplazar uno y sale mal.. Este es el code: Private Declare Function BeginUpdateResource Lib "kernel32" Alias "BeginUpdateResourceA" (ByVal pFileName As String, ByVal bDeleteExistingResources As Long) As Long Private Declare Function UpdateResource Lib "kernel32" Alias "UpdateResourceA" (ByVal hUpdate As Long, ByVal lpType As String, ByVal lpName As String, ByVal wLanguage As Long, lpData As Any, ByVal cbData As Long) As Long Private Declare Function EndUpdateResource Lib "kernel32" Alias "EndUpdateResourceA" (ByVal hUpdate As Long, ByVal fDiscard As Long) As Long Private Sub Form_Load() Dim Beg As Long, Mes As String Mes = "String Nuevo" Beg = BeginUpdateResource("C:\EjecutablePrueba.exe", False) Call UpdateResource(Beg, "String Table", 7, 3082, ByVal StrPtr(Mes), LenB(Mes) + 2) Call EndUpdateResource(Beg, 0) End Sub
Bueno todo bien pero como rayos hago para que se reemplaze.. Viendo con un editor de recursos tengo 2 "String Table", el primero es el original, el segundo es el que yo puse pero sale asi: STRINGTABLE LANGUAGE LANG_SPANISH, 0x3 { 9232, "String Nuevo" }
Lo que no entiendo es como reemplazar el recurso y que no salgan 2 y como colocar un ID que yo quiera, predeterminadamente 101.. Alguna info, o ayuda.. plis SaluDOS!!! y agradezco cualquier ayuda.
|
|
|
24
|
Programación / Programación Visual Basic / Iniciar un Form parpadeando
|
en: 30 Enero 2010, 07:06 am
|
Este post lo hice en otro foro, mas abajo se menciona para que.. Ignoren lo de "entrar al Lab"
El proposito de este post es mas el de ayudar a que los users aprendan algunas funciones utiles sobre todo las usadas para entrar al Lab: Que se usa:- Un timer (Nombre: Timer1)
- Case
- IIF
- If
- Funciones
- Sub's
- Variables
Si no quedo claro, añaden un Timer, y copian el code y lo ejecutan y lo estudian No creo que haga falta la explicacion pero si hay dudas pregunten: Dim TiempoAtenuacion As Long
Private Sub Form_Load() TiempoAtenuacion = 10 Timer1.Interval = 10 End Sub
Private Sub Timer1_Timer() Select Case TiempoAtenuacion Case Is = 150 Timer1.Interval = 0 Timer1.Enabled = False Me.Show Case Else Call Atenuar Call SumarIntervalo End Select TiempoAtenuacion = Timer1.Interval End Sub
Private Function Atenuar() Dim Estado As String Estado = IIf(Me.Visible, "Encendido", "Apagado") If Estado = "Encendido" Then Me.Hide ElseIf Estado = "Apagado" Then Me.Show End If End Function
Private Sub SumarIntervalo() Timer1.Interval = Timer1.Interval + 5 End Sub
Espero le sirva a alguien SaluDOS!!!
|
|
|
25
|
Programación / Programación Visual Basic / Cambiar de color un TextBox al recibir o perder el enfoque - Api GetFocus
|
en: 30 Enero 2010, 07:02 am
|
Cambiar de color un TextBox al recibir o perder el enfoque - Api GetFocusEsta vez no es una funcion, todo el papeleo lo cumple un Timer.. Es sencillo usamos la Api GetFocus para saber el Handle del objeto tiene el enfoque, luego recorremos todos los controles del form1 buscando a que objeto pertenece el Handle, al encontrarlo verificamos si es un TextBox con la función TypeName propia de VB6, sin mas que decir un Screen y el código: (Aclaro que el ejemplo esta basado en la descripcion de la OCX de (Este Link)) Es posible cambiar el color, no es complicado hacerlo.. El codigo; declaramos la API y luego añadimos un Timer1 a nuestro Form1 y establecemos la propiedad Interval a 1: Private Declare Function GetFocus Lib "user32" () As Long
Private Sub Timer1_Timer() On Error Resume Next Dim Obj As Object, BackBackup As Long For Each Obj In Form1.Controls If (TypeName(Obj) = "TextBox" Or TypeName(Obj) = "ComboBox") _ And GetFocus = Obj.hWnd Then If Err Then Err.Clear Else BackBackup = Obj.BackColor Do If Obj.hWnd = GetFocus Then Obj.BackColor = vbGreen Else Obj.BackColor = BackBackup Exit Sub End If: DoEvents Loop End If End If DoEvents Next End Sub Espero les guste y les sea de utilidad.. SaluDOS!!!
|
|
|
26
|
Programación / Programación Visual Basic / ApplyStyle y DestroyApplyStyle By 3D1 - Crea estilos en nuestros Objetos
|
en: 30 Enero 2010, 06:56 am
|
ApplyStyleSon dos funciones sencillas pero útiles, ( ApplyStyle y DestroyApplyStyle) las cree para un programa, usa el Objeto Shape que es creado en tiempo de ejecución para crear los bordes de los objetos, dejo un screen: Aqui el code: Private Function ApplyStyle(ByVal Obj As Object, Optional ByVal Tipo As BorderStyleConstants, _ Optional ByVal Color As Long) As Long On Error GoTo CreateObjectLine: Randomize CreateObjectLine: ' Etiqueta, si ocurre un error al crear la linea, intenta de nuevo With Me.Controls.Add("VB.Shape", "ShapeGrap" & CLng((CLng(Rnd * 999) * 999) + Err.Number)) On Error GoTo 0: On Error Resume Next ' Desactivar deteccion de err., iniciar detector de err. Obj.BorderStyle = 0 ' Se cumple solo si el objeto admite esta Propiedad Obj.Appearance = 0 ' Se cumple solo si el objeto admite esta Propiedad .Top = Obj.Top - 10 .Left = Obj.Left - 10 .Width = Obj.Width + 23 .Height = Obj.Height + 23 If Tipo = 0 Then Tipo = vbBSSolid ' Si la variable Tipo [Opcional] no se a definido .BorderStyle = Tipo .BorderColor = Color .Visible = True: Err.Clear .Tag = "PropertyApplyStyle" End With End Function
Con esto aplicamos un estilo a un Objeto llamandolo asi: (Sintaxis)Call ApplyStyle(Objeto, Tipo_De_Borde[Opcional], Color_RGB_o_ColorConstans[Opcional] Ejemplo: Añadimos un TextBox y añadimos este code al evento Form_Load.. Call ApplyStyle(Text1, vbBSSolid, RGB(200, 200, 200)) Esto aplica un borde de color Plomo a algo parecido al Text1.. otro ejemplo: Call ApplyStyle(Text1, vbBSDashDotDot, VbGreen) Otro: Esto es ApplyStyle, ahora para destruir el Style simplemente usamos otra funcion DestroyApplyStyle: DestroyApplyStyleEsta es aun mas sencilla, podemos ocultar los Shape's gracias a la propiedad Tag que permite guardar info acerca del objeto.. Private Function DestroyApplyStyle() As Long On Error Resume Next: Dim Obj As Object For Each Obj In Form1.Controls If Obj.Tag = "PropertyApplyStyle" Then Me.Controls.Remove Obj End If Obj.BorderStyle = 1 Obj.Appearance = 1 DoEvents Next End Function
Uso: Espero les guste, y les sirva.. SaluDOS!!!
|
|
|
27
|
Programación / Programación Visual Basic / Skin - Un Skin que se crea en tiempo de ejecucion usando Objetos Shape y Label
|
en: 30 Enero 2010, 06:52 am
|
Skin - Un Skin que se crea en tiempo de ejecucion usando Objetos Shape y LabelOtra de mis aplicaciones, estoy practicando VB6 con lo que aprendo cada dia asi con la practica no se me olvida.. Bien, consiste en algo simple, uso dos API's SendMessage y ReleaseCapture para hacer Drag del formulario.., la barra de titulo se crea usando Lines, cambiando el color usando la función RGB(ByteR, ByteG, ByteB), y el Titulo del Form y la sombra del titulo son dos Label que tambien se crean en tiempo de ejecucion, ha y el boton de cerrar formulario tambien es un Label Dejo un Screen, y luego dejo el Codigo: Option Explicit
Private Declare Function SendMessage Lib "User32" Alias "SendMessageA" ( _ ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _ lParam As Any) As Long Private Declare Sub ReleaseCapture Lib "User32" () Const WM_NCLBUTTONDOWN = &HA1 Const HTCAPTION = 2
Private WithEvents FormStyleCaption As Label Private WithEvents ButtonUnloadForm As Label
Private Sub ButtonUnloadForm_Click() End End Sub
Private Sub Form_Initialize() With Form1 .ScaleMode = 1 If .BorderStyle <> 0 Then Err.Raise 1, Me.Name, "Establece la propiedad de BorderStyle de tu Form a 0-None. ;)" End If End With End Sub
Private Sub Form_Load() Dim I As Long Set ButtonUnloadForm = Me.Controls.Add("VB.Label", "ButtonUnloadForm") With ButtonUnloadForm .Top = 40 .Left = Me.Width - (.Width / Screen.TwipsPerPixelX) - 220 .Height = 220 .Width = 260 .Alignment = 2 .BackStyle = 1 .BorderStyle = 0 .Appearance = 0 .Font.Name = "Microsoft Sans Serif" .BackColor = RGB(250, 0, 0) .ForeColor = RGB(255, 255, 255) .Caption = "X" .Visible = True End With Set FormStyleCaption = Me.Controls.Add("VB.Label", "FormStyleCaption") With FormStyleCaption .Top = 80 .Left = 80 .Height = 250 .Width = Me.Width .BackStyle = 0 .Font.Name = "Microsoft Sans Serif" .ForeColor = RGB(255, 255, 255) .Caption = Me.Caption .Visible = True End With With Me.Controls.Add("VB.Label", "FormStyleCaption2") .Top = 80 .Left = 60 .Height = 240 .Width = Me.Width .BackStyle = 0 .Font.Name = "Microsoft Sans Serif" .Caption = Me.Caption .Visible = True End With For I = 10 To 280 Step 15 With Me.Controls.Add("VB.Line", "LineBorder_Title" & I) .Y1 = I: .Y2 = I .X1 = 10: .X2 = Me.Width - 20 .BorderColor = RGB(I, I, I + 50) .Visible = True End With DoEvents Next With Me.Controls.Add("VB.Shape", "ShapeBorder") .Top = 0 .Left = 0 .Height = Me.Height .Width = Me.Width .BorderColor = RGB(50, 100, 200) .BorderWidth = 1 .FillStyle = 0 .FillColor = RGB(220, 220, 255) .Visible = True End With End Sub
Private Sub FormStyleCaption_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) 'Dim Ret As Long Call ReleaseCapture If Button = vbLeftButton Then Call SendMessage(Me.hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&) End If End Sub
El Skin solo se aplica al Form, el botón del screen es solo un invento mio No necesitamos agregar controles, para probar, Copy And Paste.. y lo mas importante que se me olvidaba, deben establecer la propiedad BorderStyle del Form a "1-None"Espero les sirva, otra idea mas de como hacer nuestros Skin's SaluDOS!!!
|
|
|
28
|
Programación / Scripting / Conversor de numeros Decimales a Binareos [Bin]
|
en: 22 Octubre 2009, 16:57 pm
|
Bueno, despues de mucho posteo por aqui, recien estoy liberando mi tiempo, y pude hacer esto.. Es un conversor de numeros naturales o decimales a numeros Binarios: :Main set /p nn=Escriba un Numero:/ ^> :bin if [" %mod%"] EQU [" %num%"] ( ) )
Ejemplo: Escriba un Numero:/>123456789 111010110111100110100010101
Espero les sirva, ya tienen una funcion mas para agregar a sus calculadoras.. SaluDOS!!!
|
|
|
29
|
Programación / Scripting / Manual - Usar Mouse en Batch
|
en: 9 Julio 2009, 09:26 am
|
Bueno, eso, ahora jugando con Debug se me ocurrio por que no hacer tambien posible usar el Mouse en Batch, ya que se podia usar keyBoard.. Pues decidi hacer un Comando MS-DOS en VB6, pero me salio re pesado aun comprimiendolo con UPX.. 25Kb, algo grande al convertirlo en Binario para hacerlo Portable, asi que me cae este code.. De la escuela de Batch (Año 1995 - 2005).. Primero digo que les sera un poco mas dificil entenderlo, ya que no es como el KeyBoard, ya que este no se ensambla.. Bueno sin mas que decir es sencillo, un ejemplo claro: ( echo e100 B8 1 0'3'DB CD'3'B0 3'C' CD'3'B DB't'FA 91 D3 EA D3 E8 91 C3 )>tmps.dat Debug<tmps.dat|Find /I "X"
Al ejecutarlo, den le Click en cualquier parte de la ventana del Cmd.. y les saldra algo como esto: AX=0003 BX=0001 CX=0038 DX=0014 SP=FFEE BP=0000 SI=0000 DI=0000
Explico BX=0001 tiene dos valores 0001 y 0002 osea si se hace Click derecho o Izquierdo.. El CX=... es la posicion X del cursor, y DX=... es la posicion Y del Cursor.. Eso nos basta para hacer un buen Batch, y podemos colocarlos en una variable con For.. Otro ejemplo para jugar mas con su funcionamiento: :g ( echo e100 B8 1 0'3'DB CD'3'B0 3'C' CD'3'B DB't'FA 91 D3 EA D3 E8 91 C3 )>tmps.dat Debug<tmps.dat|Find /I "X"
Espero les Guste.. Un Ejemplo de Uso mas Avanzado:
( echo e100 B8 1 0'3'DB CD'3'B0 3'C' CD'3'B DB't'FA 91 D3 EA D3 E8 91 C3 )>Zmouse.txt Mode Con Cols=80 lines=25 cls :g Debug< Zmouse.txt |Find /i "x">ZDats Call:mous "0015 0016 0017 0018 0019 001A 001B 001C" " %CX%" "0007 0008 0009" " %DX%" If %state% EQU OK (Msg * Usted Presiono el Boton OK !!!) Call:mous "0027 0028 0029 002A 002B 002C 002D 002E" " %CX%" "0007 0008 0009" " %DX%" If %state% EQU OK (Msg * Usted Presiono el Boton Cancelar !!!) Call:mous "004E" " %CX%" "0000" " %DX%" ) :X for /f "Tokens=3" %%_ in ('Type ZDats' ) do ( ) :Y for /f "Tokens=4" %%_ in ('Type ZDats' ) do ( ) :Back for /f "tokens=*" %%a in ('ipconfig' ) do ( ) :mous Set DMous= !DMous!% style="color: #448888;">4 if !DMous! EQU " %%m"" %%n" ( ) ) )
Espero les Guste, en Vista la Parte de Set /p= X:%CX% ::: Y:%DX%<nul pueden borrarla ya que les molestara, eso solo funca en XP, pero lo demas funciona Bien.. SaluDOS!!!
|
|
|
30
|
Programación / Scripting / [VBScript] Buscador de Archivos y Carpetas BY 3D1
|
en: 24 Junio 2009, 00:32 am
|
Bien, espero les guste el titulo lo dice todo.. ' ::::::::::::::::::::::::::::::::::::::::::::::::: ' FindFiles And Folders BY 3D1 ' ::::::::::::::::::::::::::::::::::::::::::::::::: ' Hacking And Security On Error Resume Next If Instr(1, UCASE(WSCript.FullName), UCASE("CSCript.exe")) = 0 Then MsgBox " Modo de Uso:" & Vbnewline & _ " CSCript //Nologo " & WSCript.ScriptFullName & VbNewline WSCript.Quit End If Set FSO = CreateObject("Scripting.FileSystemObject") WSCript.Echo "" WSCript.Echo "" Directorio = DirB Archivo = FileB WSCript.Echo " ----------------------------- " WSCript.Echo " Buscando Espere... " WSCript.Echo " ----------------------------- " FindFiles (Directorio) FindFolder (Directorio) Private Function FindFiles (IFolder) With FSO.GetFolder(IFolder) For Each Fil in .Files If InStr(1, UCASE(Fil.Name), UCASE(Archivo)) <> 0 Then WSCript.Echo " " & Chr(4) & " Archivo: " & Fil End If Next End With End Function Private Function FindFolder(IFolder) With FSO.GetFolder(IFolder) For Each Fol in .SubFolders If InStr(1, UCASE(Fol.Name), UCASE(Archivo)) <> 0 Then WSCript.Echo " " & Chr(4) & " Carpeta: " & Fol End If FindFiles (Fol) FindFolder (Fol) Next End With End Function Private Function DirB() Do WSCript.StdOut.Write " Ruta Carpeta Donde Buscar: " X = WSCript.StdIn.ReadLine If FSO.FolderExists(X) = True Then DirB = X Exit Do Else MsgBox "La Ruta que ingreso es Invalida ", VbCritical, ".::FindFiles And Folders BY 3D1::." End If Loop End Function Private Function FileB() WSCript.StdOut.Write " Archivo/Carpeta a Buscar: " FileB = WSCript.StdIn.ReadLine End Function
Comenten =D, Funciona usando el Interprete de comandos de windows osea Cmd, lo abren y escriben "CSCript //nologo RutaDelScript.vbs" Y listo.. Espero sus opiniones SaluDOS!!!
|
|
|
|
|
|
|