AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

API-Funktion SetWindowPos

Ein Thema von juezi · begonnen am 25. Sep 2007 · letzter Beitrag vom 22. Okt 2007
Antwort Antwort
Seite 2 von 3     12 3      
juezi

Registriert seit: 24. Nov 2004
34 Beiträge
 
#11

Re: API-Funktion SetWindowPos

  Alt 25. Sep 2007, 15:19
Hallo,

hier nochmal der formatierte Code

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
//Dll-Funktion um Maschinenstatus abzufragen
MepRemote_ReadMachineState(eStatus);

//Wenn der Status 9 ist muss das Formular eingeblendet werden um den Barcode abzufragen
if (eStatus = 9) and not Fl_SetSerial then
begin
//Barcode-Formular in den Vordergrund bringen
PostMessage(Self.Handle, WM_SYSCOMMAND, SC_RESTORE, 0);
SetForegroundWindow(Self.Handle);
Edit1.SetFocus
end;

//Wenn der Status ungleich 9 ist muss das Formular wieder in den Hintergrund gehen
if (eStatus <> 9) then
begin
Fl_SetSerial := false;
edit1.Text := '';
//Barcode-Formular in den Hintergrund bringen
SetWindowPos(handle,HWND_BOTTOM,Left,Top,Width,Height,SWP_SHOWWINDOW);

end;
end;
Danke
juezi
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#12

Re: API-Funktion SetWindowPos

  Alt 25. Sep 2007, 15:24
Und Dein 'Barcode-Formular' ist Form1, ja?
Ansonsten würde 'Self' nicht passen.

Desweiteren würde ich bedingt auf den Status reagieren, also das Ganze mit 'Else' abwickeln:
Delphi-Quellcode:
if (eStatus = 9) and not Fl_SetSerial then
begin
[...]
end
else if (eStatus <> 9) then begin
[...]
end;
Edit: Bevor jemand meckert:
das hat zwar nichts mit Deinem aktuellen Problem zu tun, verhindert aber, dass gar nicht erst auf 'Status <> 9' geprüft wird, sollte '(eStatus = 9) and not Fl_SetSerial' bereits zutreffen.
In diesem Beispiel Kinkerlitzchen, aber da können ggf. auch dickere Dinger dahinter stecken, die man sich so sparen und die Performance optimal halten kann.
  Mit Zitat antworten Zitat
juezi

Registriert seit: 24. Nov 2004
34 Beiträge
 
#13

Re: API-Funktion SetWindowPos

  Alt 26. Sep 2007, 05:38
Hallo,

danke habe das else .. if eingebaut, gibt es die Möglichkeit ein Formular speziell mit einem Befehl zu aktivieren, ich vermute das die andere Anwendung mit der ich über dll kommuniziere sich einmal den Fokus zurückholt.

Vielen Dank
juezi
  Mit Zitat antworten Zitat
juezi

Registriert seit: 24. Nov 2004
34 Beiträge
 
#14

Re: API-Funktion SetWindowPos

  Alt 26. Sep 2007, 10:13
Hallo,

ich habe noch eine andere Frage, gibt es die Möglichkeit eine Tastatureingabe abzufragen wenn mein Formular im Vordergrund ist aber nicht aktiv ist, wäre eine Lösung für mein Problem, denn ich benötige eigentlich nur den String vom Barcodescanner, ich dachte der Weg über das edit-Feld wäre gut
geht aber bei mir irgendwie nicht. Vielleicht gibt es ja die Möglichkeit das man grundsätzlich die Tastatureingabe abfragen kann.

Vielen Dank
juezi
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#15

Re: API-Funktion SetWindowPos

  Alt 26. Sep 2007, 10:23
Sicherlich kann man da etwas machen - aber ich weiss leider noch nicht, was Du erreichen möchtest, und wie das Ganze von statten gehen soll.
Wie viele Anwendungen hast Du, was machen die, was meinst Du mit Tastatureingabe etc.?
  Mit Zitat antworten Zitat
juezi

Registriert seit: 24. Nov 2004
34 Beiträge
 
#16

Re: API-Funktion SetWindowPos

  Alt 27. Sep 2007, 07:07
Hallo,

es laufen auf dem PC folgende Anwendungen,
1. Anwendung ist eine Automatisierungsanwendung die über eine PCI-Karte eine Presse steuert
2. es läuft ein RPC-Server der für die Kommunikation der 1. Anwendung über eine dll zuständig ist
3. eine Anwendung läuft zur Kommunikation einer SPS mit der Automatisierungssoftware der Presse
4. Meine Anwendung soll auf dem PC laufen um einen Barcode einlesen zu können, dieser eingelesene
Barcode kann dann auch über eine dll-Funktion an den RPC-Server übergeben werden, anhand dieses
Barecodes speichert Automatisierungssoftware der Presse Daten mit ab, Dateiname = Barcodenummer.

Meine Aufgabe ist es den Bediener der Presse aufmerksam zu machen einen Barcode einzulesen, hierfür dachte ich das ich ein Formular einblende um den Barcode über ein edit-Feld einzulesen, da der Barcodescanner über die Tastatur eingeschleift ist. Jetzt habe ich aber das Problem das nach dem Einblenden meines Formulars die Automatisierungssoftware den Fokus zurückholt, mein Formular ist sichtbar aber ist noch nicht aktiv, dazu muss ich das Formular erst anklicken.

Ich habe nur die Möglichkeit die 4. Anwendung zu bearbeiten, wenn es die Möglichkeit gibt die Tastatureingabe abzufragen ohne das mein Formular aktiv ist, wäre mein Problem gelöst. Mein Formular könnte ich sichtbar machen wenn auch nicht aktiv, der Bediener würde den Barcode scannen und ich würde anhand der Tastatureingabe meinen Barcode an die Automatisierungssoftware senden.

Ich bin für jeden Tip dankbar

Vielen Dank
juezi
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#17

Re: API-Funktion SetWindowPos

  Alt 27. Sep 2007, 07:33
Hallo,

muss der Barcode der eingscannt wird vorher überprüft werden ? Wenn nein, würde ich das ganze über ein Programm laufen lassen, was im Hintergrund läuft. Bei vielen Barcode-Scannern, kann man ja noch irgendwelche Steurungszeichen mitsenden. Das Hintergrundprogramm überprüft die Tastatureingaben, wenn nun das Steuerungszeichen eingegeben wird, werden die Daten an Deine Anwendung übergeben.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#18

Re: API-Funktion SetWindowPos

  Alt 27. Sep 2007, 07:43
Zitat von juezi:
Meine Aufgabe ist es den Bediener der Presse aufmerksam zu machen einen Barcode einzulesen[...]
Stell Dich doch einfach daneben und hau ihm auf die Finger, wenn er dran ist
Sorry, aber das konnte ich mir nicht verkneifen

Zitat von juezi:
Ich habe nur die Möglichkeit die 4. Anwendung zu bearbeiten, wenn es die Möglichkeit gibt die Tastatureingabe abzufragen ohne das mein Formular aktiv ist, wäre mein Problem gelöst.
Tastatureingaben werden an die aktive Anwendung geschickt.
Beschäftige Dich doch mal mit Hooks.
Mit einem globalen Keyboardhook kannst Du die Tastatureingabe abfangen/-fragen, unabhängig davon, welche Anwendung gerade aktiv ist.

Vorher könntest Du allerdings noch mit Form.OnKeyDown prüfen, ob Deine Form nicht vielleicht doch Input bekommt, der nur nicht da landet, wo er hin soll.
  Mit Zitat antworten Zitat
juezi

Registriert seit: 24. Nov 2004
34 Beiträge
 
#19

Re: API-Funktion SetWindowPos

  Alt 27. Sep 2007, 07:45
Hallo

zuerst vielen Dank für Deine Hilfe, der Barcode muss noch überprüft werden, es müssen die ersten 8 Zeichen einer Nummer (96619889) entsprechen, aber die Überprüfung kann auch im Hintergrund gemacht werden, falls der Barcode nicht die Nummer hat muss nur eine Meldung ausgegeben werden (Messagebox).
Könnte man die Eingaben der Tastatur nicht gleichzeitig in meinem Formular laufen lassen, ohne das mein Formular aktiv ist, ich bekomme anhand des eStatus 9 über die dll-Funktion mitgeteilt das die Presse einen Barcode erwartet, jetzt könnte ich mein Formular einblenden (wenn es aktiv wäre könnte ich gleich weiter machen), ich würde abwarten was für Zeichen vom Scanner kommen und dann über meine Anwendung den Barcode über eine weitere dll-Funktion wieder an die Presse geben.
Hast Du schon eine Idee?

Vielen Dank
juezi
  Mit Zitat antworten Zitat
juezi

Registriert seit: 24. Nov 2004
34 Beiträge
 
#20

Re: API-Funktion SetWindowPos

  Alt 27. Sep 2007, 07:55
Hallo,

ich habe folgende Ereignisse probiert OnKeyDown und OnKeyPress, hier habe ich breakpoints gesetzt, wenn mein Formular aktiv ist komme ich in OnKeyPress bei einer Eingabe rein, wenn mein Formular nicht aktiv ist komme ich nicht zum breakpoint, OnKeyDown reagiert überhaupt nicht, (aktiv oder nicht aktiv)

Danke
juezi
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz