[Pharo-users] uFFI ExternalAddress challenges

Guillermo Polito guillermopolito at gmail.com
Tue Sep 17 04:58:19 EDT 2019


Hi Tomaz,

Have you checked Win32WideString in Pharo7/8 and its users?
You can do

aWindowsWideString := ‘a wide string’ asWin32WideString.

And then check the senders of Win32WideString, you will find you can declare ffi signatures like this

removeEnvironmentVariable: nameString

	 ^ self ffiCall: #( int SetEnvironmentVariableW ( Win32WideString nameString, 0 ) )

Isn’t this working for you?
If not, I’d like to have more details on why it does not work, so we can figure out a solution :)

Cheers,
Guille


> El 13 sept 2019, a las 15:22, Tomaž Turk <tomaz.turk at ef.uni-lj.si> escribió:
> 
> OK, I'm proceeding with the library that I mentioned (http://disphelper.sourceforge.net/ <http://disphelper.sourceforge.net/>) and I got nice results. Pablo's package goes directly into the core of OLE/COM automation and it would be too hard to for me to study it and continue with it at this stage. 
> 
> An example below loads Word for Windows, makes it visible, creates a new document and writes some text:
> 
> | w |
> COMEngineAlpha initializeCOM .
> w := COMEngineAlpha createObjectByName: 'Word.Application'.
> COMEngineAlpha callObject: w setProperty: '.Visible = %b' withInteger: 1.
> COMEngineAlpha callObject: w method: '.Documents.Add'.
> COMEngineAlpha callObject: w method: '.Selection.TypeText(%S)' withString: 'This is a message to appear in Word document.'.
> COMEngineAlpha safeReleaseObject: w.
> COMEngineAlpha uninitializeCOM.
> 
> However, I'd like to marshall a WideString through uFFI so that I won't loose UTF-8 support, of course the plain (String aString) signature doesn't work ("Cannot coerce arguments"). Is there anything I can do myself (i.e. without poking into Pharo virtual machine complexity) to solve this challenge?
> 
> Best wishes,
> Tomaz
> 
> ------ Original Message ------
> From: "Torsten Bergmann" <astares at gmx.de <mailto:astares at gmx.de>>
> To: tomaz.turk at ef.uni-lj.si <mailto:tomaz.turk at ef.uni-lj.si>; pharo-users at lists.pharo.org <mailto:pharo-users at lists.pharo.org>
> Cc: "Any question about pharo is welcome" <pharo-users at lists.pharo.org <mailto:pharo-users at lists.pharo.org>>
> Sent: 12. 09. 2019 12:07:34
> Subject: Aw: Re: [Pharo-users] uFFI ExternalAddress challenges
> 
>> From your snippets it looks like you want to do COM Automation on Windows.
>> 
>> Maybe you should have a look at: https://github.com/tesonep/pharo-com <https://github.com/tesonep/pharo-com>
>> 
>> Bye
>> T.
>>  
>> Gesendet: Donnerstag, 12. September 2019 um 11:08 Uhr
>> Von: "Tomaž Turk" <tomaz.turk at ef.uni-lj.si <mailto:tomaz.turk at ef.uni-lj.si>>
>> An: "Any question about pharo is welcome" <pharo-users at lists.pharo.org <mailto:pharo-users at lists.pharo.org>>
>> Betreff: Re: [Pharo-users] uFFI ExternalAddress challenges
>> > We are interested in it <emoticon_smiley.png>
>> > If I recall well Pablo got one version somewhere.
>>  
>> Me too <emoticon_smiley.png>  Unfortunately, I only have time for 'weekend' projects, and any help is appreciated <emoticon_smiley.png>
>>  
>> Regarding the uFFI calls, is it possible to pass Win32WideString in a similar fashion as a String - or where to look to implement that?
>>  
>> Best wishes,
>> Tomaz

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.pharo.org/pipermail/pharo-users_lists.pharo.org/attachments/20190917/d56a3138/attachment-0001.html>


More information about the Pharo-users mailing list