Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [VB2010] Simulare Control + U

    Se in ThunderBird, il programma della posta di Mozilla, seleziono la riga relativa ad una mail e premo Control + U mi si apre una finestrella del Sorgente della mail.

    Con questo codice:

    codice:
    '690, e 147 sono le coordinate della riga di mail che voglio
    'evidenziare. Prima seleziono la riga...
    Cursor.Position = New Point(690, 147)
    Mouse_Event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, IntPtr.Zero)
    Mouse_Event(MOUSEEVENTF_LEFTUP, 0, 0, 0, IntPtr.Zero)
    
    'per valori sotto a 500 mi si apre la finestra della mail
    'come se avessi fatto un doppio click!!!!!!
    Sleep(800)
    
    SendKeys.Send("^{U}")   'SendKeys.SendWait non funge neanche lui
    Cerco di fare la stessa cosa a mezzo codice... ma non funziona.

    Come detto, per bassi valori di Sleep... SendKeys.Send("^{U}") fa le veci di un doppio click, per valori superiori nisba.

    Ovviamente se a questo punto premo a mano Control + U la finestrella del sorgente mi si apre senza problemi.

    Dove è l' errore??

  2. #2
    Ma cosa stai cercando di fare esattamente? Con ogni probabilità fai prima a scrivere un'estensione per Thunderbird (e ottieni un risultato molto più robusto)...
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Originariamente inviato da MItaly
    Ma cosa stai cercando di fare esattamente? Con ogni probabilità fai prima a scrivere un'estensione per Thunderbird (e ottieni un risultato molto più robusto)...
    Taci che ho trovato uno che se ne capisce di ThunderBird

    Io voglio leggere ed elaborare il corpo del messaggio (le mail sono centinaia).

    Pensavo appunto di aprire la finestrella del Sorgente (che è una finestrella separata, che posso chiudere con Alt+F4) e salvare il contenuto in una variabile per elaborarlo a piacere:

    codice:
    If GetText(GetForegroundWindow()).Contains("Sorgente") Then
        Clipboard.Clear()
        SendKeys.Send("^{A}")
        SendKeys.Send("^{V}")
        SendKeys.Send("^{C}")
        TestoMail = Clipboard.GetText
        SendKeys.Send("%{F4}")
    End If
    E poi cancellare la mail selezionata simulando la pressione di Canc. E così via

    Ma ovviamente se posso copiare il testo delle mail di TB in maniera più semplice... non mi pare vero.
    .

  4. #4
    Fai molto prima a leggere direttamente il file in cui vengono memorizzati i messaggi; è un file di testo in formato mboxrd, di cui si effettua il parsing facilmente.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Sei sicuro di non riferirti a qualche versione sorpassata? Sia con la ricerca di Windows sia scartabellando a mano tutte le millanta cartelle di ThunderBird non ho trovato files con questa estensione.

    Trovo molti files .sqlite, come ad esempio "global-messages-db.sqlite", ma non sono files di testo.

    ThunderBird 17.0.3

  6. #6
    mboxrd è il formato, non l'estensione. Li trovi sotto la directory del profilo/Mail/nomeaccount (o ImapMail invece di Mail per gli account IMAP), e si chiamano normalmente "Inbox", "Sent", eccetera.
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Capito e trovato.... con una certa sorpresa, nel senso che il file "Inbox" (presumo Posta in Arrivo) contiene decine e decine di messaggi che ho cancellato da moltissimo tempo, e che infatti da TB non visualizzo in nessun modo.

    Che tu sappia [OT] chè modo di ripulire la Inbox da questa spazzatura?

    Cmq il file è di testo e posso recuperare quanto sto cercando senza problemi.

    Grazie della dritta e ciao!

  8. #8
    Mezza fumata nera...........

    Il file è un file di testo, ma non troppo.... molti caratteri sono modificati ed evidentemente vengono "riconvertiti" quando leggi il file da TB.

    Esempi:

    la lettera "è" ne file è "=E8".

    la lettera "€" nel file è "=80".

    molte righe (ma inspiegabilmente non tutte) finiscono con un "=20".

    Un "=" a fine riga viene decodificato come un niente a capo.

    Avendo la mappa completa potrei risolvere con dei Stringa.Replace... ma rischiando l' errore, tipo se ho un VERO "=80.000" lo trasformerei in un "€.000"

    .

  9. #9
    Originariamente inviato da eziogsv
    Capito e trovato.... con una certa sorpresa, nel senso che il file "Inbox" (presumo Posta in Arrivo) contiene decine e decine di messaggi che ho cancellato da moltissimo tempo, e che infatti da TB non visualizzo in nessun modo.

    Che tu sappia [OT] chè modo di ripulire la Inbox da questa spazzatura?
    Al momento della cancellazione Thunderbird, per non riscrivere da capo tutto il file, si limita a cambiare un flag nell'header X-Mozilla-Status (header spiegato qui). Per ripulire il file mbox dalla spazzatura basta fare click di destro sulla cartella e scegliere "Compatta cartella".

    Per la questione degli "uguali", è parte del classico encoding MIME, vedi qui (qui in particolare la specifica). Comunque sono sicuro che cercando trovi sicuramente qualche libreria per gestire dati MIME in .NET (e magari anche per leggere file in formato mbox).

    Ne approfitto per cambiare il titolo alla discussione, dato che non c'entra più niente con la questione effettiva.
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.