none
Abrir janela utilizando API windows

    Question

  • Eu preciso abrir apenas uma janela de autenticaçao de usuario que aparece na hora da instalaçao de uma impressora que utiliza o protocolo http. Eu tenho algumas informaçoes desta janela como.

    Caption: Digitar Senha de Rede

    Class: #32770

    Porem ela possui uma Class: Edit que é onde referencia a impressora, no caso estou testando a http://10.1.1.120:631/printers/canon1

    Entao gostaria de abrir esta janela.

    Tuesday, May 15, 2012 3:01 PM

All replies

  • ninguem ?

    Tuesday, May 15, 2012 6:47 PM
  • Calma.

    Essa parte do fórum é pouco ativa,comparando às outras.Não espere respostas em menos de 4 horas...

    Dê mais informações sobre o que você precisa fazer,como e o que já tem feito.

    Tuesday, May 15, 2012 7:57 PM
  • Desculpe, é que sou novo no forum, eu consigo identificar se esta janela esta aberta utilizando a funçao findWindow, tambem consigo fecha-la, porem nao consigo abrir.

    Utilizando esta funçao:

    HWND hwndDC = FindWindow("#32770", "Digitar Senha de Rede");

    eu consigo verificar se ela esta aberta, porem nao consigo abrir e para abrir preciso passar um parametro a mais, que seria o nome da impressora, no caso: http://10.1.1.120:631/printers/canon1

    pois toda vez q passo esse usuario e senha, ele cria uma chave no registro com o nome da impressora, dentro desta chave possue dois valores, um com usuario e outro senha, porem criptografados.

    Wednesday, May 16, 2012 4:52 PM
  • Como essa janela é aberta? E após abrir,você deve inserir um texto num EDIT dentro da janela,é isso,ou não entendi?

    Wednesday, May 16, 2012 5:40 PM
  • Na hora da instalaçao da impressora eu seleciono: adicionar uma impressora -> impressora de rede, sem fio ou bluetooth -> a impressora que desejo nao esta na lista -> Selecionar uma impressora compartilhada pelo nome.
    Lá digito o endereço:
    http://nome_computador/printers/nome_impressora/.printer
    no meu caso fica
    http://10.1.1.120:631/printers/canon1

    Quando clico em avançar aparece esta janela pedindo usuario e senha, para verificar se tenho permiçao para imprimir, no caso esse usuario deve estar cadastrado no meu servidor linux 10.1.1.120 .

    Nesta janela pedindo usuario e senha ja vem um EDIT preenchido com http://10.1.1.120:631/printers/canon1






    Wednesday, May 16, 2012 7:03 PM
  • ninguem ?
    Friday, May 18, 2012 12:05 PM
  • Na hora da instalaçao da impressora eu seleciono: adicionar uma impressora -> impressora de rede, sem fio ou bluetooth -> a impressora que desejo nao esta na lista -> Selecionar uma impressora compartilhada pelo nome.
    Lá digito o endereço:
    http://nome_computador/printers/nome_impressora/.printer
    no meu caso fica
    http://10.1.1.120:631/printers/canon1

    Quando clico em avançar aparece esta janela pedindo usuario e senha, para verificar se tenho permiçao para imprimir, no caso esse usuario deve estar cadastrado no meu servidor linux 10.1.1.120 .

    Nesta janela pedindo usuario e senha ja vem um EDIT preenchido com http://10.1.1.120:631/printers/canon1

    E o que você precisa fazer?

    Friday, May 18, 2012 12:26 PM
  • EU preciso fazer um autenticador de impressao, toda vez que alguem enviar uma impressao eu pauso ela no spooler, ai invoco esta janela para autenticar o usuario, caso digite usuario e senha corretos a impressao ira sair, caso digite 3x errado ele cancela o job no spooler.
    Friday, May 18, 2012 12:43 PM
  • A dúvida fica onde,em tudo isso?
    Friday, May 18, 2012 2:38 PM
  • Você esta tentando abrir uma janela usando Api do windows ou esta tentando criar uma janela?se tiver tentando criar uma janela você vai ter que criar a janela na raça aqui vai um exemplo gerado pelo Dev c++ mas que Funcionou muito bem no VC++, essas rotinas mostram como codificar uma janela usando funções do cabeçalho "Windows.h"

    #include <windows.h>

    /*  Declare Windows procedure  */
    LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

    /*  Make the class name into a global variable  */
    char szClassName[ ] = "WindowsApp";

    int WINAPI WinMain (HINSTANCE hThisInstance,
                        HINSTANCE hPrevInstance,
                        LPSTR lpszArgument,
                        int nFunsterStil)

    {
        HWND hwnd;               /* This is the handle for our window */
        MSG messages;            /* Here messages to the application are saved */
        WNDCLASSEX wincl;        /* Data structure for the windowclass */

        /* The Window structure */
        wincl.hInstance = hThisInstance;
        wincl.lpszClassName = szClassName;
        wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
        wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */
        wincl.cbSize = sizeof (WNDCLASSEX);

        /* Use default icon and mouse-pointer */
        wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
        wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
        wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
        wincl.lpszMenuName = NULL;                 /* No menu */
        wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
        wincl.cbWndExtra = 0;                      /* structure or the window instance */
        /* Use Windows's default color as the background of the window */
        wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;

        /* Register the window class, and if it fails quit the program */
        if (!RegisterClassEx (&wincl))
            return 0;

        /* The class is registered, let's create the program*/
        hwnd = CreateWindowEx (
               0,                   /* Extended possibilites for variation */
               szClassName,         /* Classname */
               "Windows App",       /* Title Text */
               WS_OVERLAPPEDWINDOW, /* default window */
               CW_USEDEFAULT,       /* Windows decides the position */
               CW_USEDEFAULT,       /* where the window ends up on the screen */
               544,                 /* The programs width */
               375,                 /* and height in pixels */
               HWND_DESKTOP,        /* The window is a child-window to desktop */
               NULL,                /* No menu */
               hThisInstance,       /* Program Instance handler */
               NULL                 /* No Window Creation data */
               );

        /* Make the window visible on the screen */
        ShowWindow (hwnd, nFunsterStil);

        /* Run the message loop. It will run until GetMessage() returns 0 */
        while (GetMessage (&messages, NULL, 0, 0))
        {
            /* Translate virtual-key messages into character messages */
            TranslateMessage(&messages);
            /* Send message to WindowProcedure */
            DispatchMessage(&messages);
        }

        /* The program return-value is 0 - The value that PostQuitMessage() gave */
        return messages.wParam;
    }


    /*  This function is called by the Windows function DispatchMessage()  */

    LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
        switch (message)                  /* handle the messages */
        {
            case WM_DESTROY:
                PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
                break;
            default:                      /* for messages that we don't deal with */
                return DefWindowProc (hwnd, message, wParam, lParam);
        }

        return 0;
    }

     Eu lhe recomendaria desenvolver uma biblioteca de viculo dinamico.dll e exportar as funções primeiro, Ai você pode usar um IDE para desenhar as janelas e controles como por exemplo Visual Basic ai é só chamar as funções que estão na DLL. agora se você esta querendo abrir uma janela usando api você me pegou, porque eu numca vi nada relacionado a isto mas também fiquei curioso, Boa Sorte!


    Saturday, May 19, 2012 10:55 AM