Autor |
Beitrag |
TheUnknown
      
Beiträge: 334
|
Verfasst: Do 14.08.03 10:50
Moinsen!
Wie kann ich an ein laufendes Programm die Taste F6 und (zu späterer Zeit) die Taste ESC senden lassen...?
Bitte möglichst mir Sourcen, denn ich habe in dem Bereich noch nichts gecoded...
Ich will mit VirtualDub zu bestimmter Uhrzeit die Aufnahme starten und beenden lassen... ich bin dann nämlich nicht zu Hause!
|
|
MSCH
      
Beiträge: 1448
Erhaltene Danke: 3
W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
|
Verfasst: Do 14.08.03 12:33
Zitat: | The WM_KEYDOWN message is posted to the window with the keyboard focus when a nonsystem key is pressed. A nonsystem key is a key that is pressed when the ALT key is not pressed.
WM_KEYDOWN
nVirtKey = (int) wParam; // virtual-key code
lKeyData = lParam; // key data
Parameters
nVirtKey
Value of wParam. Specifies the virtual-key code of the nonsystem key.
lKeyData
Value of lParam. Specifies the repeat count, scan code, extended-key flag, context code, previous key-state flag, and transition-state flag, as shown in the following table:
Value Description
0-15 Specifies the repeat count. The value is the number of times the keystroke is repeated as a result of the user holding down the key.
16-23 Specifies the scan code. The value depends on the original equipment manufacturer (OEM).
24 Specifies whether the key is an extended key, such as the right-hand ALT and CTRL keys that appear on an enhanced 101- or 102-key keyboard. The value is 1 if it is an extended key; otherwise, it is 0.
25-28 Reserved; do not use.
29 Specifies the context code. The value is always 0 for a WM_KEYDOWN message.
30 Specifies the previous key state. The value is 1 if the key is down before the message is sent, or it is 0 if the key is up.
31 Specifies the transition state. The value is always 0 for a WM_KEYDOWN message.
Return Values
An application should return zero if it processes this message. |
das ist alles, was du brauchst. Sende eine PostMessage(<Fensterhandle>,wm_keyDown, wparam,lparam(siehe oben)) an das Fenster/Anwendung.
grez
msch
|
|
Terra23
      
Beiträge: 872
Win 8
Delphi 7
|
Verfasst: Do 14.08.03 12:40
... oder falls dir das englische zu kompliziert ist, suche hier nach Hooks, z.B. so:
HOOKS
_________________ Hasta La Victoria Siempre
|
|
Adrian
      
Beiträge: 314
|
Verfasst: Do 14.08.03 13:46
Servus,
das hört sich so an, als ob Du den PC als Videorecorder verwenden willst. Das habe ich schon seit längerer Zeit vor, aber bislang fand ich noch keine anständige Software, die mir die mit VirtualDub aufgezeichnete AVI dann in MPEG wandeln konnte. Was verwendest Du? Oder täusche ich mich mit meiner Vermutung?
Gruß,
Adrian
|
|
Ex0rzist
      
Beiträge: 550
Win XP Prof. Mandrake 10.0
D6
|
Verfasst: Do 14.08.03 13:54
Zum Umwandeln von AVI in Mpeg kannst du TMPG verwenden.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 14.08.03 15:29
Handle vom Button besorgen und ein BN_CLICK senden.
Stichworte: FindWindow, EnumWindows, FindWindowEx, EnumChildWindows.
|
|
TheUnknown 
      
Beiträge: 334
|
Verfasst: So 17.08.03 10:19
Erstmals DANKE an alle für Eure Mühen. Das Forum heir echt bombig, wirklich!
@All but Adrian: DANKE, aber das raff ich alles leider nicht!  SO gut bin ihc noch nicht! DENNOCH: DANKE! Auch in der Delphi- und SDK-Hilfe komme ich nicht zurecht, da das meiste für mich noch Kauderwelsch ist! *schäm*
@Adrian: Ja, genau, als Rekorder. Meistens sitze ich direkt dabei und starte und beende die Aufnahme. Aber neulich musste ich drindeng zu einem Kollegen. Da aber zu dieser Zeit meine MOTUs kamen, musste ich mir was einfallen lassen, denn ich konnte es ja nicht mehr manuell aufnehmen!
Das, was ich dann aufgenommen habe, konvertiere nach dem Zurechtschneiden (Werbung raus, etc.) ich mit VirtualDub ins DivX 5.x.x-Format. _Ich erkläre Dir gern, wie man das konvertiert, wenn Du damit Probleme hast. Für MPEG empfehel ich Dir ebenfalls das Programm "TMPEGEnc". Der Link stehe ja ein kleines Stückchen weiter oben!
|
|
Adrian
      
Beiträge: 314
|
Verfasst: Mo 18.08.03 18:04
Servus!
Jetzt habe ich mir die Zeit genommen und eine Timer-Steuerung programmiert - natürlich nicht ganz unneigennützig.
momentan ist sie so ausgelegt, daß nur die Eingabe der Uhrzeit möglich ist, man kann also nicht eine Aufnahme für mehrere Tage im Voraus programmieren, ich denke aber, das wird sowieso nicht der Fall sein.
Falls Du eine andere VirtualDub-Version benutzst, mußt Du das in den "FindWindow"-Zeile umändern.
Das Formular hat nur 2 Edit-Felder für Aufname-Start und -Ende sowie eine Schaltfläche um das Ganze zu aktivieren.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65:
| unit XPSenden; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; Edit2: TEdit; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; E, A: Boolean; hOE: hWnd; implementation {$R *.dfm} procedure Einschalten; begin hOE:=FindWindow(nil,'virtualdub 1.4.13 - capture mode');//Finde das Fenster mit VirtualDub SetForegroundWindow(hOE);// Bringe VirtualDub in den Vordergrund keybd_event(117,0,0,0);//Taste F6 drücken keybd_event(117,0,KEYEVENTF_KEYUP,0);//Taste F6 loslassen E:=True; end; procedure Ausschalten; begin hOE:=FindWindow(nil,'virtualdub 1.4.13 - capture mode'); SetForegroundWindow(hOE); keybd_event(27,0,0,0);//Taste ESC drücken keybd_event(27,0,KEYEVENTF_KEYUP,0);//Taste ESC loslassen A:=True; end; procedure TForm1.Button1Click(Sender: TObject); var EinStr, AusStr: String; Ein, Aus: Real; begin Application.Minimize;//damit es nicht weiter stört E:=False; A:=False; EinStr:=Edit1.Text;//Aufnahme Start, Beisp. 17:25:33 AusStr:=Edit2.Text;//Aufnahme Ende, Beisp. 00:05:08 repeat Ein:=(3600*StrToFloat(copy(EinStr,1,2))+ 60*StrToFloat(copy(EinStr,4,2))+ StrToFloat(copy(EinStr,7,2)))/86400; E:=False; until (Ein<=GetTime) or E; Einschalten; repeat Aus:=(3600*StrToFloat(copy(AusStr,1,2))+ 60*StrToFloat(copy(AusStr,4,2))+ StrToFloat(copy(AusStr,7,2)))/86400; A:=False; until (Aus<=GetTime) or A; Ausschalten; Close;//Automatisches Beenden nach Aufnahme end; end. |
Und wenn noch Fragen da sind - auq.de!
Gruß,
Adrian
P.S. Wie geht das mit DivX? Und was sind MOTUs?
|
|
TheUnknown 
      
Beiträge: 334
|
Verfasst: Mo 18.08.03 18:28
Adrian hat folgendes geschrieben: |
Und wenn noch Fragen da sind - auq.de!
Gruß,
Adrian
P.S. Wie geht das mit DivX? Und was sind MOTUs? |
Hi Adrian!
DANKESCHÖN! Ich bin im Moment nicht zu Hause aber ich probiere Deine Sourcen sofort aus, wenn ich kann... SPITZE!
MOTU bedeutet MASTERS OF THE UNIVERSE. Gabs schon mal in der 80er (in meiner Kindheit wr ich verrückt danach!  ) und kommt jetzt als Newstyle raus... Ab September gibt's auch viel Merchandise dazu, also Figuren, etc...
Zu DivX: Zunächst mal musst Du den Codec installiert haben. Aktuell ist glaube ich Version 5.0.3. Den gibt's als Professional- und als Freeware-Bundle. Pro kostet Kohle und hat etwas bessere Bildqualität und so und paar Spielereien mehr, brauchste aber eigentlich nicht - spar Dir also die Kohle!  Den Codec findest Du unter www.divx.com.
Nach der Installation startest Du VirtualDub und öffnest den zu verarbeitenden AVI-File. Jetzt schnibbelst Du Dir das File zurecht. DANACH, also wenn Du den Clip fertig hast, wählst Du folgendes VIDEO -> COMPRESSION -> DivX-Codec X.x.x -> Configure. Es öffnet sich ein Fenster. Darin steht unter anderem "OUTPUT VIDEO BITSTREAM AT YYY KILOBIT/SECOND". Für YYY gibst Du einen Wert von minimum 1024 an. Je höher der Wert, desto besser die Bildqualität, klaro!
"VARIABLE BITRATE MODE" stellst Du auf "1-pass" und "PERFORMANCE/QUALITY" auf "Slowest". Den Rest kannst Du so lassen (empfehle ich Dir!). Mit OK den Dialog schliessen. Den Codecauswahldialog auch mit OK schliessen.
Aktiviere die Option VIDEO -> FULL PROCESSING MODE, wenn sie noch nicht aktiv ist. Und aktiviere die Option AUDIO -> FULL PROCESSING MODE, wenn sie noch nicht aktiv ist. JETZT wählst Du AUDIO -> COMPRESSION. Dort stellst Du den Deinen Audio-Codec ein. Ich empfehle Dir einen MP3-Codec bei 128kBit auf Stereo...
Wenn Du diese Einstellung gemacht hast, wählst Du FILE -> SAVE AS AVI F7. Gibt die Outputdatei an und warte ein bisschen. E voila.
Noch einen Tipp. Du musst nach jedem Programmstart die Codeceinstellunge von neu einstellen. Damit Du das nicht musst, mach folgendes. Stelle die Codec ein, wie ich es Dir oben beschrieb. DANN wählst Du FILE -> SAVE PROCESSECING SETTINGS. Gib eine Datei an. Wenn Du in Zukunft wieder eine Datei DivXen willst, öffne die Datei, lade die PROCESSING-Datei, schnibbel am AVI rum und speichere das AVI nun mit FILE -> SAVE AS AVI F7.
Bei weiteren Fragen: Einfach fragen! 
|
|
Dieses Thema ist gesperrt, Du kannst keine Beiträge editieren oder beantworten.
Das Thema wurde von einem Team-Mitglied geschlossen. Wenn du mit der Schließung des Themas nicht einverstanden bist, kontaktiere bitte das Team.
|
|