Search Results

Search found 7 results on 1 pages for 'createoleobject'.

Page 1/1 | 1 

  • Delphi SAPI Text-To-Speech

    - by Andreas Rejbrand
    First of all: this is not a duplicate of http://stackoverflow.com/questions/1021490/delphi-and-sapi. I have a specific problem with the "SAPI in Delphi" subject. I have used the excellent Import Type-Library guide in Delphi 2009 to get a TSpVoice component in the component palette. This works great. With var SpVoice: TSpVoice; I can write SpVoice.Speak('This is an example.', 1); to get asynchronous audio output. First question According to the documentation, I would be able to write SpVoice.Speak('This is an example.', 0); to get synchronous audio output, but instead I get an EZeroDivide exception. Why's that? Second question But more importantly, I would like to be able to create the SpVoice object dynamically (I think this is called to "late-bound" the SpVoice object), partly because only a very small fraction of all sessions of my app will use it, and partly because I do not want to assume the existance of the SAPI server on the end-user's system. To this end, I tried procedure TForm1.FormClick(Sender: TObject); var SpVoice: Variant; begin SpVoice := CreateOleObject('SAPI.SpVoice'); SpVoice.Speak('this is a test', 0); end; which apparently does nothing at all! (Replacing the 0 with 1 gives me the EZeroDivide exception.) Disclaimer I am rather new to COM/OLE automation. I am sorry for any ignorance or stupidity shown by me in this post...

    Read the article

  • Best practice in this situation?

    - by Steve
    My Delphi program relies heavily on Outlook automation. Outlook versions prior to 2007-SP2 tend to get stuck in memory due to badly written addins and badly written Outlook code. If Outlook is stuck, calling CreateOleObject('Outlook.Application') or GetActiveObject ... doesn't return and keeps my application hanging till Outlook.exe is closed in the task manager. I've thought of a solution, but I'm unsure whether it's good practice or not. I'd start Outlook with CreateOleObject in a separate thread, wait 10 seconds in my main thread and if Outlook hangs (CreateOleObject doesn't return), offer the user to kill the Outlook.exe process from my program. But since I don't want to force the user to kill the Outlook.exe proccess, as an alternative I also need a way to kill the new thread in my program which keeps hanging now. My questions are: a, Is this good practice b, How can I terminate a hanging thread in Delphi without leaking memory? Is there a way?

    Read the article

  • If terminating a hung thread is a good idea, how do I do it safely?

    - by Steve
    My Delphi program relies heavily on Outlook automation. Outlook versions prior to 2007-SP2 tend to get stuck in memory due to badly written addins and badly written Outlook code. If Outlook is stuck, calling CreateOleObject('Outlook.Application') or GetActiveObject ... doesn't return and keeps my application hanging till Outlook.exe is closed in the task manager. I've thought of a solution, but I'm unsure whether it's good practice or not. I'd start Outlook with CreateOleObject in a separate thread, wait 10 seconds in my main thread and if Outlook hangs (CreateOleObject doesn't return), offer the user to kill the Outlook.exe process from my program. But since I don't want to force the user to kill the Outlook.exe process, as an alternative I also need a way to kill the new thread in my program which keeps hanging now. Is this good practice? How can I terminate a hanging thread in Delphi without leaking memory?

    Read the article

  • how do i login to gmail via internet explorer using iwebbrowser 2

    - by omair iqbal
    is it possible to login to sites like facebook,gmail using iwebbrowser2? in the code below what can i add so that it can login to gmail(with ie8 as browser) using the username and password i put in a variable? MyBrowser := CreateOleObject('InternetExplorer.Application') as IWebBrowser2; MyBrowser.Navigate('http://mysite.com'..........???); note : i am a newbie. sorry for my english:) and thanks in advance

    Read the article

  • Undelete a contact in outlook

    - by Alister
    I have an application written in Delphi that adds / updates contacts in outlook. The problem I'm having is that if the contact has been deleted in Outlook, the code still finds the contact and updates it - and the contact still remains deleted. Is there a way I can determine if the contact is deleted or undelete the contact? Roughly the code looks something like: OutlookApp := CreateOleObject('Outlook.Application'); Mapi := OutlookApp.GetNameSpace('MAPI'); //..... try if ContactOutlookEntryID.AsString <> '' then aContact := Mapi.GetItemFromID(ContactOutlookEntryID.AsString); except end; //try to locate the contact if they have been synchro'd before if VarIsEmpty(aContact) then //if not found aContact := Contacts.Items.Add(2); //add a new contact to outlook aContact.LastName := ContactSurname.AsString; //.....

    Read the article

  • not enough actual parameters ?

    - by omair iqbal
    The following program returns error : e2035 not enough actual parameters in 2 places (lines 39 and 45) and is not compiling. Can someone please help me out? Can I put 0 or null in place of parameters here? unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,ComObj,shdocvw,activex, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var mybrowser : iwebbrowser2; myUserName, myPassword,loginURL : string; Flags: OleVariant; begin Flags := navOpenInNewWindow; MyBrowser := CreateOleObject('InternetExplorer.Application') as IWebBrowser2; MyBrowser.Navigate('http://www.gmail.com',flags,'_blank'); myUserName := 'UserName'; myPassword := 'password'; loginURL:='javascript:var Email = document.getElementById(''Email'');Email.value=''' + myUserName + ''';var Password = document.getElementById(''Passwd'');Password.value=''' + myPassword + ''';var SignIn = document.getElementById(''signIn'');SignIn.click();'; MyBrowser.Navigate(loginURL); end; end.

    Read the article

1