View Full Version : VB6


JomarB
10-11-2006, 19:43
Ola pessoal, estou somente agora programando em VB6 e gostaria que voces me dessem uma ajudinha com as funcoes API, queria que me ajudassem detalhadamente para que eu podesse enteder. Se poderem gostaria que dessem um exemplo de algum programa que que tenha haver com asfuncoes API.:wow:

Kayvlim
10-11-2006, 20:55
Ola pessoal, estou somente agora programando em VB6 e gostaria que voces me dessem uma ajudinha com as funcoes API, queria que me ajudassem detalhadamente para que eu podesse enteder. Se poderem gostaria que dessem um exemplo de algum programa que que tenha haver com asfuncoes API.:wow:
Tens vários sites que podes usar para alguma ajuda relacionada com API.
http://www.allapi.net é um bom exemplo dum site que eu ainda uso.

Um exemplo para tu dares já um toque na API:
Cria um novo projecto, e acrescenta-me um timer, denominado "Timer1", e uma TextBox, "Text1", e uma ListBox "List1" e cola isto:


Option Explicit

'EXEMPLO DE COMO USAR API
'angelofwisdom, 10/11/2006

'Declarações da API:

'GetForegroundWindow - retorna o Handle da janela actual. Handle = identificação
'GetWindowTextLength - retorna o número de caracteres do título da janela actual
'GetWindowText - retorna o título da janela actual, e escreve-o numa variável
' dada pelo utilizador.

Private Declare Function GetForegroundWindow Lib "user32" () As Long

Private Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" _
(ByVal hwnd As Long) As Long

Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" _
(ByVal hwnd As Long, _
ByVal lpString As String, _
ByVal cch As Long _
) As Long

'Variável global: LastHandle, que contém o handle da última janela verificada.

Private LastHandle

Private Sub Form_Load()
'Altera o intervalo do Timer para 100, de forma a não ocupar muito CPU
'e ter um intervalo aceitável para verificar a janela actual.
Timer1.Interval = 100
End Sub


Private Sub Timer1_Timer()
'dimensiona cada variável
Dim CurrentWindowHandle As Long
Dim TextLength As Integer
Dim buffer As String

'verifica qual é o handle (a identificação) da janela actual
CurrentWindowHandle = GetForegroundWindow

'se a janela actual não for a janela encontrada na última verificação
'(isto é, caso o utilizador tenha mudado de janela)
If Not CurrentWindowHandle = LastHandle Then

'verifica quantos caracteres tem o título janela actual
TextLength = GetWindowTextLength(CurrentWindowHandle)

'aumenta o buffer de modo a ter o mesmo número de espaços
'isto é, aloca na memória o espaço suficiente para ir buscar o título
buffer = Space(TextLength + 1)

'vai buscar o título da janela actual, e vai pô-lo na variável "buffer"
'apenas irá "pegar" em alguns bytes. Neste caso, no tamanho do buffer,
'que, por sua vez, tem o tamanho total dos caracteres do título.
'Desta forma, tanto se podem ir buscar 10 bytes, como 100, como todos os bytes
'que o título da janela tem.
GetWindowText CurrentWindowHandle, buffer, Len(buffer)

'Escreve na TextBox o buffer, isto é, o título da janela actual
Text1.Text = buffer

'Adiciona, na lista, o handle da janela actual, e o respectivo título
List1.AddItem CStr(CurrentWindowHandle) & " | " & Text1.Text

'E diz que, esta janela é a última janela verificada.
'Assim, não precisa de entrar nesta função a cada 1/10 de segundo.
LastHandle = CurrentWindowHandle

End If

End Sub



Comentei o código todo. No entanto, aviso-te já que não sou propriamente um bom professor...

Espero que ajude :) se precisares de alguma ajuda suplementar, pede ;)

Cumprimentos [[[[[[[[[[]]]]]]]]]]
angelofwisdom

JomarB
12-11-2006, 11:01
Valeu pela ajuda caro angelofwisdom (http://www.techzonept.com/member.php?u=20575) vbmenu_register("postmenu_1250011", true); :kfold: valeu mesmo ya.
Agradecimentos ao quadrado.:x2:

Kayvlim
12-11-2006, 15:06
Valeu pela ajuda caro angelofwisdom (http://www.techzonept.com/member.php?u=20575) vbmenu_register("postmenu_1250011", true); :kfold: valeu mesmo ya, agora ja cosigo fazer qualquer outro programa usando funcoes API.
Agradecimentos ao quadrado.:x2:
Anytime :)

JomarB
12-11-2006, 17:50
Come brada sera que me poderias indicar sites em portugues, a minha nota em Ingles nao passa de 17 e me fica um bocado dificil entender o que la esta.:)

Kayvlim
17-11-2006, 00:35
Muito sinceramente, em português não sei... mas se vais ficar na área de programação, acredita que saber inglês é precioso. Vê lá tu que até eu entrar no 10º ano, pensava que Inglês era obrigatório... enquanto que não passa de mais uma disciplina.

Estar no mundo da informática e não saber inglês... epah, não consigo encontrar uma analogia ao que é :-D mas acredita que não irás poder usufruir duma grande parte daquilo que a internet te pode dar.

Abraços [[[[[[]]]]]]]
angelofwisdom

p.s.: acho que com 17 tinhas o dever de entender o que lá está :-D

p.p.s.: o que é suposto dizeres com "come brada"? :confused:

HecKel
17-11-2006, 04:28
Em parte concordo com o angelofwisdom (http://www.techzonept.com/member.php?u=20575) pois inglês é algo realmente importante para um informático, quanto mais cedo de habituares com o inglês técnico melhor.

No entanto tal como referi..., é inglês técnico e tu com 16 anos é aceitável teres dificuldades (eu mesmo sinto dificuldade em algumas expressões), mas nada como perguntar ;)

abraços, HecKel

JomarB
17-11-2006, 18:49
Ca em Angola Come Brada e mais ou menos chamar alguem mas com todo o respeito tas a ver:wow:

Kayvlim
24-11-2006, 01:47
Notei agora, depois de ter "postado" no fórum inglês de visual basic, que estás lá a colocar a mesma questão (http://www.xtremevbtalk.com/showthread.php?t=274546). Ainda precisas de alguma ajuda extra? É que num fórum ingles, vão-te dar links em inglês....

p.s.: só notei que eras tu depois de eu te ter respondido ;)

Cumps [[[[[[]]]]]]
angelofwisdom

JomarB
28-11-2006, 15:44
Estive a notar que quando declaramos a funcao API ela traz consigo alguns parametros:) .
Agora me digam, sera que para chamar a funcao API devo primeiro criar uma variavel de retorno ?e depois devo tambem trabalhar com os parametros da funcao? caso tenha de o fazer como devo?:)