1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Winsock

Discussão em 'Programação' iniciada por JomarB, 26 de Fevereiro de 2007. (Respostas: 15; Visualizações: 1262)

  1. JomarB

    JomarB Power Member

    Ola pessoal estou com um grande pequeno problema no VB6.
    Estou tentando utilizar o componente Winsock e o programa apresenta uma janela de erro e se fecha.
    Pelo que eu saiba todos os componentes ocx estao na pasta system32, e tentei procuralo mais nao o encontrei.
    Sera que e isto que eu deveria fazer ou tem outra opcao.
    Ajuden-me:'(
     
  2. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

  3. asa_delta

    asa_delta Power Member

    Já trabalhei muitas vezes com o Winsock, e é necessário adiciona-lo ao projecto, vais ao adicionar componentes e tem lá klk coisa parecida com microsoft.winsock, e depois vai-te aparecer uma imagem,(2 pc's) e é só arrasta-la(mesma forma k um timer) para o form onde vais utilizar o winsock



    Asa_delta
     
  4. JomarB

    JomarB Power Member

    O meu grande problema e este.
    Quando eu tendo adicionar este componente aparece uma mesnsagem de erro,
    Qualquer coisa com objecto nao registrado.:'(
     
  5. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Sim, era o que eu estava a dizer. Geralmente, os componentes OCX têm de ser "registados" (inseridos no registry de modo a o Windows saber que existem). Porquê, sinceramente, não sei. Não costumo trabalhar com eles. Deixo esta parte para alguém mais experiente do que eu :)

    Experimenta uma coisa: tens o WinSock.OCX, certo? O ficheiro não está em falta, pois não?
    Então vai à pasta desse ficheiro. Se não estiver em C:\Windows\System (Windows pode ser WINNT, WPX, o que quiseres....é a pasta do windows), copia-o para lá.
    Depois, vai à linha de comandos (ou Menu Iniciar -> Executar)e escreve
    regsvr32 C:\Windows\System\WinSock.OCX (corrige a pasta e o nome do ficheiro, caso estes estejam errados no meu exemplo). Desta forma deves ficar com o winsock registado, e o componente, pronto a usar nos programas.
     
  6. JomarB

    JomarB Power Member

    Acabei d fazer o que tu me disseste mais e correu tudo bem mas quando eu tento adicionar o objecto Winsock o VB automaticamente fecha dizendo que encontrou um erro.
    Pra finalizar de uma vez com este problema sera que devo instalar novamente o VB6 ?8|
     
  7. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Antes de o fazeres, diz-me só uma coisa: tens privilégios administrativos no teu computador?
    Comigo isso também acontecia, mas era só quando eu entrava com uma conta limitada (a minha).
     
  8. JomarB

    JomarB Power Member

    A minha conta é limitado sim mas eu instalei o VB depois de ela estar limitada e não antes.
    Mas caso for este o problema o que devo fazer sabe, é que eu preciso imenso de usar este componente.:'(
     
  9. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Experimenta executar o próprio VB na conta de administrador e fazer o projecto lá.

    Como eu tinha dito acima, se tens tamanha necessidade de utilizar sockets, não és obrigado e utilizar o componente WinSock. Podes acrescentar ao teu projecto uma classe e um módulo (o CSocketMaster), e depois com duas linhas de código crias novos sockets.

    Se precisares de uma explicação pormenorizada, avisa ;) .
    O meu conselho vai mesmo para o CSocketMaster. Definitivamente.

    Repito, se quiseres mesmo o componente WinSock (o OCX), liga o administrador, e executa LÁ o VB.

    Cumps [[[[[[]]]]]]]
    angelofwisdom
     
  10. JomarB

    JomarB Power Member

    Caso este metodo nao me obrigue a ser um administrador, podes me dar explicacoes:kfold:
     
  11. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Mas experimentaste executar como Administrador, e colocar o componente WinSock?
     
  12. JomarB

    JomarB Power Member

    Infelizmente nao o consegui porque o "meu" so esta neste estado devido a demasia de programas que eu tenho instalado e por este facto estou agora limitado.
    E a explicacao ?:kfold:
     
  13. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    A única explicação que tenho para dar é a de como colocar o CSocketMaster a trabalhar...
    Sabes usar o WinSock, certo? :P

    1) Acrescenta a classe e o módulo do CSocketMaster ao projecto.

    2) Na parte das declarações (isto é, fora de todas as subs/functions), escreve
    Código:
    Private WithEvents sckProtocolo As CSocketMaster
    (sckProtocolo foi um nome dado por mim. Escreves aí o nome de uma variável qualquer à tua escolha ;) )
    Private/Public, a diferença é se está a nível de módulo ou de form.


    3) No Form_Load, escreve
    Código:
    Set sckProtocolo = New CSocketMaster
    E tens agora o objecto sckProtocolo a funcionar como se o tivesses colocado no form. A única diferença (que eu tenha notado) entre o CSocketMaster e o componente WinSock é o nome do métodoe evento Close, que no CSocketMaster se chama CloseSck.

    Cumps [[[[[[]]]]]]
    angelofwisdom
     
  14. JomarB

    JomarB Power Member

    Isto quer dizer que o CSocketMaster possui as mesmas propiedades que o Wsock.
    Entao eu so devo colocalo e pum!! ja esta pronto para trabalhar.:002:
     
  15. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Em princípio sim. Deves poder utilizá-lo tal e qual como utilizas o WinSock (excepto o Close -> CloseSck, como já disse).
    Quando tiveres feito isso, avisa ;)
     
  16. JomarB

    JomarB Power Member

    Olha estou com um novo problema quanto ao adicionar a classe e o modulo.
    Estou a seguir os seguintes passos:
    1- Project
    2- Add Class Module
    depois disto tento rodar o programa e vem uma mensagem de erro que diz mais ou menos isto:
    Used definid type ou qualquer coisa do genero.
    Sera que estou errando em algum procedimento.8|
     

Partilhar esta Página