Visual Basic - que APIS utilizar?

Life is soft - evento anual de software empresarial
 
Vista:

que APIS utilizar?

Publicado por JOSE (2 intervenciones) el 28/04/2007 00:19:50
quiero hacer una aplicacion que al abrirle me cambiara la ip del proxy, la resolucion del apantalla se que se hace con APIS no se cuales utilizar.

gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:que APIS utilizar?

Publicado por ivan (1 intervención) el 28/04/2007 01:42:41
pues has de saber que yo nunca e cambiado la IP, qué es proxy?

para cambiar la resolucion puedes probar esta rutina que me funcionó muy bien.

----------------------------------------------------------------------------------------------------------------
En el módulo principal:

' Para cambiar la resolución de la pantalla.
Public Monitor As New CambioDePantalla

' Variables públicas para cambio de configuración del monitor.
Public bCambiarMonitor As Boolean
Public Indice1 As Long, Indice2 As Long

----------------------------------------------------------------------------------------------------------------
En el Sub Main:

'Al entrar:
x = Screen.Width / 15
y = Screen.Height / 15

If x <> 800 And y <> 600 Then ' Aquí se juega con la configuración a la que uno
' quiere cambiar.
frmConfiguracionDeMonitor.Show vbModal
Set frmConfiguracionDeMonitor = Nothing

If Not bCambiarMonitor Then
End
End If

End If

'Antes de salir de la aplicación.
Monitor.fRestaurarModo
Set Monitor = Nothing
End

----------------------------------------------------------------------------------------------------------------
' Formulario para solicitar el cambio de configuracion del monitor.

frmConfiguracionDeMonitor
Option Explicit

Private Sub Form_Load()
bCambiarMonitor = False
End Sub

Private Sub Form_KeyPress(KeyAscii As Integer)

If KeyAscii = 27 Then
cmdCancelar_Click
End If

End Sub

Private Sub cmdAceptar_KeyPress(KeyAscii As Integer)

If KeyAscii = 27 Then
cmdCancelar_Click
End If

End Sub

Private Sub cmdAceptar_Click()
bCambiarMonitor = True
fCambiarMonitor
Unload Me
End Sub

Private Sub cmdCancelar_KeyPress(KeyAscii As Integer)

If KeyAscii = 27 Then
cmdCancelar_Click
End If

End Sub

Private Sub cmdCancelar_Click()
bCambiarMonitor = False
Unload Me
End Sub

Sub fCambiarMonitor()
Dim psi As Long

Monitor.fRutinaInicial frmConfiguracionDeMonitor.hdc
Monitor.fModoInicial 0, 0, 0, psi
Monitor.fCambiarModo Indice2
End Sub

Este formulario es pequeño y tiene dos Label:
uno dice:
"La configuración del monitor se va a cambiar para ESTA APLICACIÓN
y se restaurará al salir de la misma."
el otro dice:
"Si quiere continuar haga click en Aceptar, o en Cancelar para salir."

y tiene dos botones:
uno para ACEPTAR y el otro para CANCELAR.

----------------------------------------------------------------------------------------------------------------
' Módulo de clase para el cambio de configuración del monitor.

CambioDePantalla
Option Explicit

' Declaración de Funciones API a usar.
Private Declare Function ChangeDisplaySettings Lib "user32" Alias "ChangeDisplaySettingsA" _
(lpDevMode As Any, ByVal dwFlags As Long) As Long

' API para saber los formatos de resoluciones posibles.
Private Declare Function EnumDisplaySettings Lib "user32" Alias "EnumDisplaySettingsA" _
(ByVal lpszDeviceName As Long, ByVal iModeNum As Long, _
lpDevMode As DEVMODE) As Boolean

Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long

Const CCHDEVICENAME = 32
Const CCHFORMNAME = 32

Const DM_BITSPERPEL = &H40000
Const DM_PELSWIDTH = &H80000
Const DM_PELSHEIGHT = &H100000
Const DM_DISPLAYFLAGS = &H200000
Const DM_DISPLAYFREQUENCY = &H400000

Const BITSPIXEL = 12

' Flags para cambiar resoluciones.
Const CDS_UPDATEREGISTRY = &H1
Const CDS_TEST = &H2
Const CDS_FULLSCREEN = &H4
Const CDS_GLOBAL = &H8
Const CDS_SET_PRIMARY = &H10
Const CDS_RESET = &H40000000
Const CDS_SETRECT = &H20000000
Const CDS_NORESET = &H10000000

' Valores retornados por ChangeDisplaySettings.
Const DISP_CHANGE_SUCCESSFUL = 0
Const DISP_CHANGE_RESTART = 1
Const DISP_CHANGE_FAILED = -1
Const DISP_CHANGE_BADMODE = -2
Const DISP_CHANGE_NOTUPDATED = -3
Const DISP_CHANGE_BADFLAGS = -4
Const DISP_CHANGE_BADPARAM = -5

' Valores usados en EnumDisplaySettings.
Const ENUM_CURRENT_SETTINGS As Long = -1&
Const ENUM_REGISTRY_SETTINGS As Long = -2&

Private Type DEVMODE
dmDeviceName As String * CCHDEVICENAME
dmSpecVersion As Integer
dmDriverVersion As Integer
dmSize As Integer
dmDriverExtra As Integer
dmFields As Long
dmOrientation As Integer
dmPaperSize As Integer
dmPaperLength As Integer
dmPaperWidth As Integer
dmScale As Integer
dmCopies As Integer
dmDefaultSource As Integer
dmPrintQuality As Integer
dmColor As Integer
dmDuplex As Integer
dmYResolution As Integer
dmTTOption As Integer
dmCollate As Integer
dmFormName As String * CCHFORMNAME
dmUnusedPadding As Integer
dmBitsPerPel As Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type

' Matriz para guardar los formatos disponibles.
Dim ScrMode() As DEVMODE
Dim NumModes As Long

' Variables para guardar la configuración actual.
Dim lBits As Long, lWidth As Long, lHeight As Long

' Variables para guardar la configuración nueva.
Dim lBitsNva As Long, lWidthNva As Long, lHeightNva As Long

Private Flg As Boolean

Public Sub fRutinaInicial(hdcFrm As Long)
Dim hdc As Long
Dim i As Long
Dim a As Long
Dim s As String

' Se debe pasar el Hdc del Form que llama a la clase.
' Tomamos la configuración inicial del video.
hdc = hdcFrm
lBits = GetDeviceCaps(hdc, BITSPIXEL)
lBitsNva = lBits
lWidth = Screen.Width \ Screen.TwipsPerPixelX
lHeight = Screen.Height \ Screen.TwipsPerPixelY

' Cargamos los posibles modos.
ReDim Preserve ScrMode(0) As DEVMODE
i = 0

Do
a = EnumDisplaySettings(0&, i, ScrMode(i))
i = i + 1

If a Then
ReDim Preserve ScrMode(i) As DEVMODE

If ScrMode(i - 1).dmBitsPerPel = lBitsNva And _
ScrMode(i - 1).dmPelsWidth = 800 And _
ScrMode(i - 1).dmPelsHeight = 600 Then
lWidthNva = ScrMode(i - 1).dmPelsWidth
lHeightNva = ScrMode(i - 1).dmPelsHeight
Indice2 = i - 1
End If

If lBits = ScrMode(i - 1).dmBitsPerPel And _
lWidth = ScrMode(i - 1).dmPelsWidth And _
lHeight = ScrMode(i - 1).dmPelsHeight Then
Indice1 = i - 1
End If

End If

Loop While a

NumModes = i - 1
Flg = True
End Sub

Public Sub fModoInicial(SAncho As Long, SAlto As Long, bits As Long, PosArray As Long)

' Devuelve las medidas del video inicial.
If Flg = False Then Exit Sub

SAncho = ScrMode(Indice1).dmPelsWidth
SAlto = ScrMode(Indice1).dmPelsHeight
bits = ScrMode(Indice1).dmBitsPerPel
PosArray = Indice1
End Sub

Public Function fCambiarModo(Index As Long) As Long
Dim flags As Variant
Dim Cdv As Long

'Cambia la resolución de acuerdo a la posición de la matriz pasada en Index.
If Flg = False Then Exit Function

If Index < 0 Or Index > NumModes Then
fCambiarModo = 255
Exit Function
End If

ScrMode(Index).dmFields = DM_BITSPERPEL Or DM_PELSWIDTH Or DM_PELSHEIGHT
flags = CDS_UPDATEREGISTRY
Cdv = ChangeDisplaySettings(ScrMode(Index), flags)
fCambiarModo = Cdv

' Valores devueltos en fCambiarModo.
' 0 = Cambio realizado.
' 1 = Debe reiniciar para ver los cambios.
' -1 = Error al realizar el cambio.
End Function

Public Function fRestaurarModo() As Long
' Restaura la resolución, dejando la configuración
' original cuando se creó la clase.
If Flg = False Then Exit Function

fRestaurarModo = fCambiarModo(Indice1)
End Function
----------------------------------------------------------------------------------------------------------------

Si no se me olvida algo, creo que es todo lo que hay que hacer.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar