24. januar 2001 - 21:03Der er
19 kommentarer og 3 løsninger
Program til at lave genveje med
jeg skal lave et projekt hvor jeg skal lave et program der skal kunne køre i baggrunden mens et andent program køre. det baggrundsprogrammet skal kunne gøre er at fortælle det andet program at hvis man trykker f.eks. F5 så skal det udføre en komando i et andet program hvor man ikke kan ændre source code. Det progammet skal kunne er at registre hvilken tast man trykker hvorefter den skal give f.eks. word2000 komandoen til at åbne f.eks. filer hvorefter den skal gå ind i en af sub menuerne og evt. gå ind i endnu et sub menu. spørgsmålet er så hvordan for jeg det program jeg laver der køre i baggrunden til at fortælle word2000 at den skal udføre den komando?
Det lyder som noget du måtte kunne klare med noget automation. Jeg ved ikke, hvordan det laves i VB, men det ville ikke være noget større problem i Delphi, at \'fjernstyre\' Word 2000 og få den til at åbne en bestemt fil.
Du skal lave en key-hook som griber fat i windows generalle key-press kø, koden skal ligge i en DLL. Jeg har læst et sted at VB ikke kan lave True DLL\'er men den lave OLE DLL\'er og at en keyhook skal i en True DLL. Om det er rigtigt ved jeg ikke. Jeg ved ikke helt om man kan styre hvortil key-pressne skal. Eks.vis når man trykker på F5 skal den kun havde en funktion hvis word-2000 har fokus?
For at snakke med Word-2000 lyder det som du gerne vil kommandere word. Du skal så lave dit program med OLE automatisation. Med OLE skal du kende til Word-OLE function kald. I stil med \"New\", \"FileOpen\", ect.
>>Pstric hvordan laver man det så i Delphi gerne lidt detaljeret hvis du kan. Jeg har nemlig aldrig afprøvet Delphi.
Og Eagleeye der må vel være en DLL i windows hvor den gennerelle kye-press kø er. Ved du hvor? kan man ikke ersatte den ved at lave en ny DLL med tilsvarende tal værdier og derefter modificere den lidt via programmet ? Og hvordan finder jeg Word-OLE funktionens kald er det bare hvad der står eller skal man kende sorce koden før man kan det?
Jeg er ikke sikker på, at et eksempel i Delphi vil være til stor nytte, så jeg har prøvet i VB. Det var faktisk ikke så svært at fjernstyre Word.
Lav en ny Standard Applikation.
I Project|References... skal du scrolle ned til Microsoft Word 9.0 Object Library og checke det. Klik OK.
Læg en CommandButton på formen og lav flg. Click event handler:
Private Sub Command1_Click() Dim wApp As Word.Application Dim wDoc As Word.Document Set wApp = New Word.Application Set wDoc = wApp.Documents.Add wDoc.Activate wApp.Visible = True End Sub
Declare Function SetWindowsHookEx Lib \"user32\" Alias \"SetWindowsHookExA\" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long Declare Function UnhookWindowsHookEx Lib \"user32\" (ByVal hHook As Long) As Long Public Const WH_KEYBOARD = 2
Global hHook As Long
Function KeyboardProc(ByVal idHook As Long, ByVal lParam As Long, ByVal wParam As Long) As Long KeyboardProc = 0 If lParam = Asc(\"A\") Then KeyboardProc = 1 End If End Function
-------------
Med SetWindowsHookEx kan du hook\'e dig på diverse køer i windows.
Der går nok en lille uge før får afprøvet hvilken svar er det bedste det kunne jo godt være jeg fik brug for ydereligere hjælp men keep watching endtil vidre har I været en meget god hjælp på forhånd tak.
ok det tog godt nok lidt mere end en uge inden jeg fik tjekket det =( men her er følgene. først pstric -> når jeg laver det du siger kan den ikke compile det eller lave det til .exe den siger noget med at dim wApp ikke er god eller lign..... desuden har jeg prøvet at sætte det som declaration og det hjælper hellere ikke (går ud fra du mener standard exe?)
Eageleye -> dit virker hellere ikke man kan godt nok compile det osv. men det funger ikke man kan godt skrive f.eks. A og a selvom man har sat den til ikke at kunne gøre det. desuden står der oxo at det er til win95 men win98 er da næsten det samme på dette punkt ik? (ville det oxo virke i win2000).
Starter VB og vælger Open i den dialogbox der kommer op, hvor Standard EXE er valgt. Dobbeltklikker på CommandButton, så der placeres en midt på formen. Dobbeltklikker på Command1, og genererer derved: Private Sub Command1_Click()
End Sub Vælger Project->References. Scroller ned til Microsoft Word... og sætter fluebenet til venstre. Klikker OK. Indsætter linierne fra 25/01 2001 22:00:12 Klikker på Start toolbutton\'en i toolbaren under menuen. Det starter en form med en CommandButton. Klikker på Command1. Word åbner med et tomt dokument.
Det virker godt nok hos mig. Det kan være at der er nogle af VB-hajerne der kan se hvad der er galt.
Får du listen med properties og metoder, efter at du har skrevet \"Dim wApp As Word.\"? Hos mig foreslår den \"Word\" så snart jeg har indtastet \"Wo\" og \"Application\" efter \"Ap\".
Jeg har Visual Studio 6.0 og Office 2000 Pro installeret på Win2k pro.
Du er _helt_ sikker på at du husker at sætte fluebenet, ikk?. Det er ikke nok, at Word... er markeret med blåt.
Nå, det har du jo nok. Jeg kan desværre ikke gennemskue dit problem, men af en eller anden grund bliver Word åbenbart ikke registreret ordentligt i VB.
Prøv evt. om du kan bruge andre Office komponenter.
pstric -> nu startede du med at sige at det ville være nemt i delphi og nu tror jeg at jeg vil lave det i det istedet så kan du forklare mig hvordan det gøres der ?? må gerne være ret detaljeret da jeg ikke lige har den største erfaring med delphi4 (endnu) =)
jeg syntes her er lidt dødt nu så jeg vælger at tage nogle af pointne tilbage men i får da lidt som en kompensation. jeg vil oprette et nyt spørgsmål under programering -> delphi
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.