Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[GTK+] Funkcja wykonujaca się w nieskończoność

Ostatnio zmodyfikowano 2014-04-09 15:39
Autor Wiadomość
dominicuss
Temat założony przez niniejszego użytkownika
[GTK+] Funkcja wykonujaca się w nieskończoność
» 2014-04-06 19:46:11
chciałbym aby ta funkcja po kliknięciu przycisku toggle wykonywała się do czasu odciśnięcia przycisku... ale w moim wypadku wykonuje się w nieskończoność zawieszając aplikacje...

C/C++
static int send_message( GtkWidget * widget, gpointer data )
{
    HWND okno = FindWindow( NULL, "tytuł okna" );
    if( okno == NULL )
    {
        message_box( window,( gpointer ) "Cannot find <tytuł okna> window" );
        return 1;
    }
    const gchar * entry_buffer = gtk_entry_get_text( GTK_ENTRY( entry ) );
   
    if( !strcmp( entry_buffer, "" ) )
    {
        message_box( window,( gpointer ) "Entry box is empty" );
        return 1;
    }
   
    do
    {
        SetForegroundWindow( okno );
        input_keys( entry_buffer ); //wypisuje pewien string do okna aplikacji
        input_button( VK_RETURN ); //wykonuje przycisk wtym wypadku VK_RETURN = enter
        Sleep( 30000 );
    } while( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( button ) ) );
   
    return 0;
}
funkcja działa ale zawiesza działanie aplikacji do czasu przerwania pętli...
P-107800
adsko
» 2014-04-07 15:02:10
Dodaj jakiś timer który będzie wywoływał tą funkcje(Sleep zawiesi apke), albo daj na innym zadaniu (wielozadaniowość).
P-107843
MrPoxipol
» 2014-04-07 18:42:36
P-107861
dominicuss
Temat założony przez niniejszego użytkownika
» 2014-04-09 15:39:07
C/C++
static int send_message( gpointer data )
{
    SetForegroundWindow( okno );
    input_keys( entry_buffer );
    input_button( VK_RETURN );
    return 1;
}


static int button_f( GtkWidget * widget, gpointer data )
{
    entry_buffer = gtk_entry_get_text( GTK_ENTRY( entry ) );
   
    okno = FindWindow( NULL, "tytuł okna" );
   
    if( okno == NULL )
    {
        message_box( window,( gpointer ) "Cannot find <tytuł okna> window" );
        return 1;
    }
   
    if( !strcmp( entry_buffer, "" ) )
    {
        message_box( window,( gpointer ) "Entry box is empty" );
        return 1;
    }
    gint interval = gtk_spin_button_get_value_as_int( GTK_SPIN_BUTTON( spinbox ) );
   
    gint timer = g_timeout_add(( interval * 1000 ), send_message, NULL );
    return 0;
}

na wypadek gdyby komuś to było potrzebne
P-107956
« 1 »
  Strona 1 z 1