windows - hvordan man forbinder to programmer (c ++, qt)

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har 2 programmer. Console og QT. Konsolprogrammet skal lave nogle data, og qt-programmet skal end vise disse data. Men dette skal være separate programmer, og jeg ved ikke, hvordan kan jeg fortælle QT-programmet at gøre noget fra min konsol. To programmer er lokale og Qt-programmet kører altid (så jeg ikke kan bare køre det hver gang), og Console kun frokostes når det er nødvendigt. Så spørgsmålet er - hvordan kan jeg udføre noget i Qt efter konsolprogrammets afslutninger?
P. S. Konsolprogrammet laver en fil, som Qt-programmet kan læse og end vise.
Jeg bruger vinduer.

Bedste reference


Du kan overveje at bruge noget som QFileSystemWatcher til at afstemme for ændringer i en bestemt mappe, så har dit konsolprogram skrive filen der. På den måde vil Qt-programmet få en besked, når indholdet i telefonbogen ændres. [5]

Andre referencer 1


Int Qt, kan du starte konsolprocessen med QProcess. Denne klasse har et finished signal, som du kan oprette forbindelse til en slot i din applikationsobjekt. Så når konsolprocessen er færdig, brænder finished -signalet, og din slot-funktion kaldes. På det tidspunkt kan du læse outputfilen. [6]


Dette er mere effektivt end en QFileSystemWatcher fordi du 'direkte ser den relevante begivenhed (konsolprogrammets færdiggørelser).

Andre referencer 2


Interprocess Communication (IPC) er den løsning, du leder efter.


MSDN-dokumentationen er tilgængelig her, der indeholder flere detaljer om implementering af dette i din ansøgning samt kodeprøver. [7]

Andre referencer 3


Denne teknik kaldes 'Screen scraping'. Du gør dette ved at forbinde konsolappens stdout til Qt apps input.
Se http://doc.qt.nokia.com/latest/qprocess.html[8]

Andre referencer 4


Tag et kig på QSharedMemory: http://doc.qt.nokia.com/4.7-snapshot/qsharedmemory.html. Det tillader inter-thread og inter-process kommunikation. [9]


Et meget flot og kort eksempel på hvordan du bruger QSharedMemory er her: http://doc.trolltech.com/main-snapshot/ipc-sharedmemory.html[10]