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 - gulabyte

#31

kepatxa!!

Resulta que buscando y buscando sobre cómo girar la pantalla con vb he dado con la función keybd_event y he querido aportar lo que he aprendido de él... ;D ;D

La cuestión es que se puede qirar la pantalla usando la combinación de teclas Ctrl+Alt+Flechitas en WinXP y es por eso que necesitaba de keybd_event... pero aparte de brindarte todas las funciones que Windows implementa mediante las combinaciones de teclas (administrador de tareas, dialogo buscar, un gran etc...) la función keybd_event te permite por ejemplo mantener alguna tecla permanentemente...

Yo dejo el código para que se dé rienda suelta al tema... :-X

La gran función keybd_event:
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Algunas constantes..
Const KEYEVENTF_KEYUP = &H2 'Para despulsar o soltar la tecla
Const KEYEVENTF_EXTENDEDKEY = &H1 'No sé lo que es
Const VK_DELETE = &H2E 'Del
Const VK_MENU = &H12 'Alt
Const VK_CONTROL = &H11
Const VK_DOWN = &H28
Const VK_RIGHT = &H27
Const VK_LEFT = &H25
Const VK_UP = &H26


Hay toda una lista de constantes de teclas algún foro chino...bueno por si no sabéis chino...os ayudo :P http://blog.csdn.net/caridle/archive/2007/06/26/1667741.aspx :laugh: :laugh:

un ejemplo: poner pantalla de lado [lo de arriba a la izquierda]
Call keybd_event(VK_CONTROL, 0, 0, 0) 'Pulsar
Call keybd_event(VK_MENU, 0, 0, 0) 'Pulsar
Call keybd_event(VK_LEFT, 0, 0, 0) 'Pulsar
   
Call keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0) 'Soltar
Call keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0) 'Soltar
Call keybd_event(VK_LEFT, 0, KEYEVENTF_KEYUP, 0) 'Soltar


Acordaros de "soltar" la tecla porque sino se puede quedar alguna tecla pulsada y se lía gorda porque las demás teclas pueden funcionar como combinación... :rolleyes: a mi me ha pasao que he puesto VKK_CONTROL (sin Option Explicit) y se me ha quedao la pantalla palla y las teclas paca... estrujando el cerebro para mover bien el ratón y hacer copy&past de VK-UP y ejecutar :laugh:  :¬¬  :laugh: :laugh:

que lo disfruten !! salu10!!  ;)
#32
El asunto es que merodeando un poco por el Panel de Control y tal... me he encontrado con una opción que hace que rote la pantalla [90, 180 o 270 grados] adaptando además también el ratón al volteo y quería implementar esa opción al apartado Fun/Miscellaneos de mi ratoncito perez... ;D ;D

La cuestión es que mirando por ahí encontre la API ChangeDisplaySettingsEx que tiene como parámetro un tipo de datos (DEVMODE) en el cual se almacenan las características de la pantalla: la resolución, opciones de color,.. y entre ellas está dmOrientation que es la que se supone que almacena la orientación o ángulo de la pantalla...

Pues resulta que el API que yo he encontrado no tenía declaradas las constantes que usa dmOrientation y además le faltan algunas constantes más.... el API en concreto es http://allapi.mentalis.org/apilist/D30C6FE933807D158AFF771D2F780906.html.
Además he encontrado otros ejemplos que se centraban más en eso de rotar el ángulo de la pantalla y he visto que el tipo de datos DEVMODE tenía además más características, tenía aparte del dmOrientation un dmDisplayOrientation (que luego he leído que era el que se necesita para la pantalla y que el otro era para la impresión....). Bueno total que intento tras intento no he conseguido darle la vuelta a la pantalla y he decidido postear....

Agradecería infinitamente que postearan la API ChangeDisplaySettingsEx completa si es que existe :¬¬
#33

demasiado figurado el sentido ese.... ;D ;D
#34

Te recomendaría una cosa.. empieza otra vez con el proyecto codeando el cliente y el servidor otra vez.... tienes funciones en el troyano sin conseguir que se conecte.. vete poco a poco...

Primero consigue la conexión usando la dirección LAN en tu ordenador y con el API winsock, luego haz que un timer te mire el estado de la conexión por ejemplo cada 500 milisegundos, y que te ponga el estado de ésta en un label por ejemplo para que veas como va en tiempo real...

Configura el server para que se conecte a tu LAN IP (192.168.1.3, por ejemplo) y pones como puerto por ejemplo 7887. Después simplemente pones en el cliente un command para que ponga en escucha ese puerto y después ejecutas el servidor...

Consigue primero la conexión y luego te haces con las funciones...

slau10 ;D
#35

si tienes el cliente y el servidor en el mismo ordenador prueba a poner la direccion IP LAN (puedes obtenerlo poniendo ipconfig en la consola (inicio ejecutar "cmd")) o aun la loop (127.0.0.1).
Sino para probar la cuenta no-ip prueba desde fuera de tu red, desde internet...

salu10 ;D
#36

lo de selecteditem creo que tienes que ponerlo así: Combo1.ItemData(Combo1.ListIndex)....
#37
haz un bucle que te mire los objetos del array uno a uno y si coincide con el nombre que quieres borar que sobreescriba en ese espacio el siguiente nombre y asi consecutivamente....algo como...

Dim i, j as integer 'Contadores
Dim Nombre As String

For i = 1 To "cantidad de objetos en el array"
    if array(i) = Nombre Then
        for j = 1 to "objetos array - i"
            If not (i+1) > cantidad de objetos en el array then array(i) = array(i+1) else: array(i) = ""
        next j
    end if
next i


asi lo que harías sería encontrar el nombre, y sobreescribir el hueco de ese nombre con el que esta en el siguiente hueco, uno a uno hasta llegar al final... claro que al hacer eso te quedará el último hueco vacío....

espero que te sirva ;D

Mofificado.
PD: Lo de [If not (i+1) > cantidad de objetos en el array] es para que no te de error porque sino al llegar al último sería array(4) = array(5) cuando array(5) no existe.... además si el nombre se repite en la lista te los va borrar todos, ya que después de salir del bucle de "j" sigue el de "i"....para evitarlo podrias poner "exit sub" después del next j.... intenta comprender el código y modifícalo a tu gusto ;D
#38

supongo que la idea sería agregar los objetos de los combos mediante código: en el primer combo metes la lista que es fija y después que la lista del segundo combo se genere cuando le das click al objeto del combo, es decir algo como....

Private sub combo1_click...
   Select Case combo1.selecteditem
      Case "noseke"
         combo2.additem...
         combo2.additem...
         combo2.additem...
         combo2.additem...
      Case "nosekuantos"
         combo2.additem...
         combo2.additem...
         combo2.additem...
         combo2.additem...
    End Select
End sub


y lo mismo con los otros combos...

no sé como tienes que usar access y eso... es una idea ;D


salu10!!
#39

Recalco lo que ha dicho jackl007 ツ, eso de diferenciar copiar de robar... Estoy de acuerdo contigo  jackl007 ツ creo que siempre hay que respetar y reconocer lo que han hecho otros poniendo los créditos....
#40
Yo no comparto esa opinión skapunky. Creo que el que empieza a programar creándose su propio troyano lo que hace en realidad es crear una simple aplicación cliente-servidor que funcionará como un chat, o como mucho ejecute alguna lamerada al recibir algún comando, cosa que no se podría considerar un troyano, es más sería quizá más simple que una calculadora.

Respecto a lo de copiar, claro que te surgen problemas al copiar código, pero el aprendizaje consiste en comprender lo que copias y por qué falla y sólo si consigues eso lograrás que funcione, por tanto lo de copiar si entiendes lo que copias está bien, es más, es así como se evoluciona... O es que no se ha hecho así durante toda la historia... entender lo que ha hecho el otro y el que puede mejorarlo...

Sugiero menos "reflexión" y más crítica constructiva.

PD: No sé lo que quieres decir exactamente con eso de saber utilizar bien "la API", creo que lo usas mal. Es verdad que significa "Interfaz de Programación de Aplicaciónes", pero no es correcto usarlo así. Se puede ver en el artículo de Wikipedia:

"Una interfaz de programación de aplicaciones o API es el conjunto de funciones y procedimientos que ofrece cierta biblioteca para ser utilizado por otro software como una capa de abstracción....Uno de los principales propósitos de una API consiste en proporcionar un conjunto de funciones de uso general, por ejemplo, para dibujar ventanas o iconos en la pantalla...."

Y en inglés:

"An application programming interface (API) is a method for an application to use the functions of an operating system or programming library. It typically consists of a set of functions, procedures, methods, classes or protocols that an operating system, library or service provides to support requests made by computer programs."

En los dos ejemplos se usa el acrónimo en plural, como si cada conjunto de funciones orientado a un propósito en concreto fuera una API. Tuve la duda y yo lo comprendí así después de consultarlo por lo menos...