Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - CeLaYa

#151
shadow.darknesses la función Shell es solo para archivos ejecutables es decir como los: .exe o .bat, si lo que quires es que el archivo de texto se habra algún editor de texto, entonces coincido con EON en que uses la api ShellExecute.


un ejemplo:

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Const SW_SHOWNORMAL = 1
Private Sub Form_Load()
    ShellExecute Me.hwnd, vbNullString, "algo.zip", vbNullString, "C:\", SW_SHOWNORMAL
End Sub


esto ejecutará el winzip (en mi caso) y abrirá el archivo "algo.zip"
#152
Programación Visual Basic / Re: VB anda mal
16 Enero 2007, 14:30 PM
me supongo que ese código va en el evento "ConnectionRequest":


Private Sub wsServer_ConnectionRequest(ByVal requestID As Long)
    If wsServer.State <> sckClosed Then wsServer.Close
    wsServer.Accept requestID
   
    List1.AddItem wsServer.RemoteHostIP
   
End Sub


porque esto a mi me funciona muy bien, otra cosa seria que revisaras si el firewall del windows o tu vacuna no estan bloqueando tu aplicacción.

;D en mi caso tuve que agregar mi aplicación a las excepciones del firewall del windows y de la vacuna para que me dejara correrla  ;D
#153
te recomiendo consultes la ayuda del VB, vienen ejemplos de eso

creeme la "ayuda" si ayuda...
#154
bueno los módulos de clase los he usado para hacer dll's alli pones los procesos que quieras que sean accesados por ejemplo:

Módulo de clase:


Option explicit

Public Function Suma(x as integer, y as integer) as integer
   suma = x + y
end function


esto lo compilarías como una dll

y para usarlo en tu proyecto .vbp la tendrías que agregar como referencia y seria más o menos así:


dim D as MiDll

set d = new MiDll
msgbox d.Suma(4,5)

set d = nothing
#155
esos vienen en "C:\Archivos de programa\Microsoft Visual Studio\COMMON\Graphics", pero son al estilo w98, si quieres unos iconos mejores sacalos de "c:\windows\system32\shell32.dll"


te dejo una función para sacar los iconos:

En un módulo pones:

Option Explicit

Private Type PicBmp
   Size As Long
   tType As Long
   hBmp As Long
   hPal As Long
   Reserved As Long
End Type

Private Type GUID
   Data1 As Long
   Data2 As Integer
   Data3 As Integer
   Data4(7) As Byte
End Type

Public FILE_SHELL As String

Private Declare Function OleCreatePictureIndirect Lib "olepro32.dll" (PicDesc As PicBmp, RefIID As GUID, ByVal fPictureOwnsHandle As Long, IPic As IPicture) As Long

Private Declare Function ExtractIconEx Lib "shell32.dll" Alias "ExtractIconExA" (ByVal lpszFile As String, ByVal nIconIndex As Long, phiconLarge As Long, phiconSmall As Long, ByVal nIcons As Long) As Long
Private Declare Function DestroyIcon Lib "user32" (ByVal hicon As Long) As Long

Public Sub GetIconFromFile(ByRef Lista As ImageList, FileName As String, iconIndex As Long, UseLargeIcon As Boolean) ' As Picture
    Dim X As Long
    ' Parametros:
    ' FileName - Nombre Fichero (EXE o DLL) que contiene los iconos
    ' IconIndex - Indice del icono a extraer, comienza en 0
    ' UseLargeIcon-True para icono grande, False para icono pequeño
    ' Returns: Objeto Picture, donde devolvera el icono
   
    Dim hlargeicon As Long, hsmallicon As Long, selhandle As Long
   
    ' El objeto requiere una referencia a "Standard OLE Types"
    Dim pic As PicBmp, IPic As IPicture, IID_IDispatch As GUID
    X = 0
    'While ExtractIconEx(FileName, X, hlargeicon, hsmallicon, 1) <> 0
        If ExtractIconEx(FileName, iconIndex - 1, hlargeicon, hsmallicon, 1) <> 0 Then
            If UseLargeIcon Then
                selhandle = hlargeicon
            Else
                selhandle = hsmallicon
            End If
           
            With IID_IDispatch
                .Data1 = &H20400
                .Data4(0) = &HC0
                .Data4(7) = &H46
            End With
           
            ' Fill Pic with necessary parts.
            ' Configura el picture con las partes necesarias
            With pic
                .Size = Len(pic) ' Longitud de la extructura.
                .tType = vbPicTypeIcon ' Tipo de Picture (bitmap).
                .hBmp = selhandle ' Handle al bitmap.
            End With
           
            ' Crea el objeto Picture
            Call OleCreatePictureIndirect(pic, IID_IDispatch, 1, IPic)
           
            ' Devuelve el objeto Picture
            Lista.ListImages.Add , , IPic
           
            'Set GetIconFromFile = IPic
           
            DestroyIcon hsmallicon
            DestroyIcon hlargeicon
            X = X + 1
        End If
    'Wend
End Sub


y en el form:

GetIconFromFile ImageList1, "c:\windows\system32\shell32.dll", Numero_de_icono, True
picture1.Picture = ImageList1.ListImages(1).Picture



lo que hago aqui es poner las imagenes en un ImageList y luego de alli las paso a cualquier control, espero te sirva
#156
pues yo siempre he usado shell



dim l as long

on local error resume next
l = Shell("c:\..\programa.exe", vbMaximizedFocus)
if err then
     'Si no se puede ejecutar se produce un error
     msgbox Err.Description
end if
On local error goto
#157
eso se hace con una api:

Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2
Const SWP_NOSIZE = &H1
Const SWP_NOMOVE = &H2
Const SWP_NOACTIVATE = &H10
Const SWP_SHOWWINDOW = &H40
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)

Private Sub Form_Activate()
    SetWindowPos Me.hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
End Sub
#158
agrega a tu proyecto "Microsoft Forms 2.0 Objet Library", y usa las propiedades Picture y PicturePosition para ponerle una imagen y decirle en donde la alinie.
#160
y no has revisado en que linea se genera el error?