|
211
|
Programación / Programación Visual Basic / modificar icono en systray
|
en: 20 Agosto 2006, 02:19 am
|
bueno hola otra vez,. mi aduda es la siguiente tengo un programa que se pone en el systray con un icono muy lindo jeje,. lo que keiro acer es que el programa cuadno este activo tenga un icono y cuadno este desactivado tenga otro, se entiende?? el codigo que uso es el siguiente: en un modulo Private Type NOTIFYICONDATA cbSize As Long hWnd As Long uID As Long uFlags As Long uCallbackMessage As Long hIcon As Long szTip As String * 128 dwState As Long dwStateMask As Long szInfo As String * 256 uTimeout As Long szInfoTitle As String * 64 dwInfoFlags As Long End Type
Dim nf_IconData As NOTIFYICONDATA
Const NOTIFYICON_VERSION = 3 Const NOTIFYICON_OLDVERSION = 0
Const NIM_ADD = &H0 Const NIM_MODIFY = &H1 Const NIM_DELETE = &H2
Const NIM_SETFOCUS = &H3 Const NIM_SETVERSION = &H4
Const NIF_MESSAGE = &H1 Const NIF_ICON = &H2 Const NIF_TIP = &H4
Const NIF_STATE = &H8 Const NIF_INFO = &H10
Const NIS_HIDDEN = &H1 Const NIS_SHAREDICON = &H2
Const NONE = &H0 Const WARNING = &H2 Const ERROR = &H3 Const INFO = &H1 Const GUID = &H4
Const WM_MOUSEMOVE = &H200 Const WM_LBUTTONDOWN = &H201 Const WM_LBUTTONUP = &H202 Const WM_LBUTTONDBLCLK = &H203 Const WM_RBUTTONDOWN = &H204 Const WM_RBUTTONUP = &H205 Const WM_RBUTTONDBLCLK = &H206 Private Declare Function Shell_NotifyIcon Lib "shell32" _ Alias "Shell_NotifyIconA" _ (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean Sub AgregarIcono(icono) With nf_IconData .cbSize = Len(nf_IconData) .hWnd = frm_main.hWnd .uID = vbNull .uFlags = NIF_ICON Or NIF_INFO Or NIF_MESSAGE Or NIF_TIP .uCallbackMessage = WM_MOUSEMOVE .hIcon = icono .szTip = "Bloker" & vbNullChar 'QuickInfo Symbols & vbNullChar .dwState = 0 .dwStateMask = 0 End With
Shell_NotifyIcon NIM_ADD, nf_IconData 'NIM_ADD Agregamos el icono a la barra End Sub Sub QuitarIcono() Shell_NotifyIcon NIM_DELETE, nf_IconData 'NIM_DELETE Quitar el icono de la barra End Sub Sub MostrarGlobo(Texto As String, tipo As Long) With nf_IconData .cbSize = Len(nf_IconData) .hWnd = frm_main.hWnd .uID = vbNull .uFlags = NIF_ICON Or NIF_INFO Or NIF_MESSAGE Or NIF_TIP .uCallbackMessage = WM_MOUSEMOVE .hIcon = frm_main.Icon .szTip = "Bloker" & vbNullChar 'QuickInfo Symbols & vbNullChar .dwState = 0 .dwStateMask = 0 .szInfo = Texto & Chr(0) 'Texto del globo .szInfoTitle = "Informacion" & Chr(0) 'Titulo del globo .dwInfoFlags = tipo .uTimeout = 1000 'Tiempo de espera (millisec.) End With Shell_NotifyIcon NIM_MODIFY, nf_IconData 'Activamos el globo End Sub Sub Eventos(x As Single) Dim lMsg As Long Dim sFilter As String lMsg = x / Screen.TwipsPerPixelX Select Case lMsg 'you can play with other events as I did as per your use Case WM_LBUTTONDOWN Case WM_LBUTTONUP 'Form2.PopupMenu Form1.MnuMostrar Case WM_LBUTTONDBLCLK If frm_main.Visible = False Then frm_habilita.Show End If Case WM_RBUTTONDOWN Case WM_RBUTTONUP 'Form2.PopupMenu Form2.MnuMostrar frm_main.PopupMenu frm_main.Archivo Case WM_RBUTTONDBLCLK End Select End Sub
tonces,. para agregar el icono pongo AgregarIcono "dirrecion del icono" y me salta error,. el icono lo puedo poner, solo que si modifico esto Sub AgregarIcono(icono) es que no me anda, en fin,. no puedo cambiar el icono del systray en tiempo de ejecucion alguna solucion??' El MaRo!
|
|
|
212
|
Programación / Programación Visual Basic / Re: IEFrame, buscando clase
|
en: 20 Agosto 2006, 02:13 am
|
bueno... buske en la web que me dijiste y encontre algunos firewalls echos en vb,. lo que pasa es que solo controlan las peticiones de conexión,. lo que entra,. yo n3cesito lo que sale,. pero bue... cambie la metodologia de mi programa,. voy x la version 2.0 que blokea mas programas y x lo pronto voy a usar las class,. y no los nombre de procesos,. ya que si le cambian el nombre...sassss me cagan asi que bue,.. gracias x todo man y suerte en lo tuyo
El MaRo!
|
|
|
214
|
Programación / Programación Visual Basic / Re: IEFrame, buscando clase
|
en: 18 Agosto 2006, 07:55 am
|
si,. lo de la clase de mi ventana lo sabia,. pero lo que kiro yo es.... yo ya blokeaba IE abriendo el exe en forma binaria y verificando los proceso... pero.. si cambian el nombre del IE falla, y si se utiliza otro navegador falla,. si se utiliza un navegador echo en cualkeir otro lenguaje y usa las bibliotecas de IE falla... tonces algo mas abarkativo seria...detectar cuando se valla a utilizar el puerto 80 para ahi si..blokear la aplicacion que lo utiliza espero que se aya entendido
|
|
|
215
|
Programación / Programación Visual Basic / Re: IEFrame, buscando clase
|
en: 18 Agosto 2006, 07:02 am
|
muchas gracias,. la verdad no ize eso xq no entiendo mucho de esas apis, recien ahora me estoy familiarizando en fin encuentra todos los IEFrame y los cierra....ahora yo digo.,.,. si go un explorador con vb usando el webbrowser...usa el IEFrame??? xq ese si que no me lo cierra
lo que estoy ciendo es un programa que blokee IE tengo que actualizar la version pa darle mas seguridad y creo que lo mejor es acer un proxy entre mi programa y el port 80 o no?
|
|
|
217
|
Programación / Programación Visual Basic / IEFrame, buscando clase
|
en: 18 Agosto 2006, 00:49 am
|
buenas tengo este codigo para conseguir las calses, el tema es que me pide el nombre de la ventana(el code lo sake del API-Guide) y yo necesito saber si esta activa la clase IEFrame que es la del internet explorer, como mela lo ago?? Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long Const SW_SHOWNORMAL = 1 Const WM_CLOSE = &H10 Const gcClassnameMSWord = "OpusApp" Const gcClassnameMSExcel = "XLMAIN" Const gcClassnameMSIExplorer = "IEFrame" Const gcClassnameMSVBasic = "wndclass_desked_gsk" Const gcClassnameNotePad = "Notepad" Const gcClassnameMyVBApp = "ThunderForm" Private Sub Form_Load() Dim WinWnd As Long, Ret As String, RetVal As Long, lpClassName As String 'Ask for a Window title Ret = InputBox("Enter the exact window title:" + Chr$(13) + Chr$(10) + "Note: must be an exact match") 'Search the window WinWnd = FindWindow(vbNullString, Ret) If WinWnd = 0 Then MsgBox "Couldn't find the window ...": Exit Sub 'Show the window ShowWindow WinWnd, SW_SHOWNORMAL 'Create a buffer lpClassName = Space(256) 'retrieve the class name RetVal = GetClassName(WinWnd, lpClassName, 256) 'Show the classname MsgBox "Classname: " + Left$(lpClassName, RetVal) 'Post a message to the window to close itself PostMessage WinWnd, WM_CLOSE, 0&, 0& End Sub estaria bien buscar todas las ventanas y a cada nombre de ventana verivicar si usa ese calse?? gracias El MaRo!
|
|
|
219
|
Programación / Programación Visual Basic / Re: Sónido en VB
|
en: 17 Agosto 2006, 05:36 am
|
dieguito usa esto toma, en un modulo .bas pones las declaraciones: Declare Function sndPlaySound Lib "WINMM.DLL" Alias "sndPlaySoundA" _ (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long Const SND_SYNC = &H0 Const SND_ASYNC = &H1 Const SND_NODEFAULT = &H2 Const SND_LOOP = &H8 Const SND_NOSTOP = &H10
y en el formulario pones donde kieras,. en el load,. en un boton o donde mela kieras SoundName$ = "tu_sonido.wav" wFlags% = SND_ASYNC Or SND_NODEFAULT x% = sndPlaySound(SoundName$, wFlags%)
El MaRo!
|
|
|
|
|
|
|