stdole.dll IPicture

Questions about Wine on Linux
Locked
fargodwe

stdole.dll IPicture

Post by fargodwe »

I'm am trying to help another user (see viewtopic.php?f=8&t=30613) with an issue getting a Visual Basic application working in wine. I have installed the program along with a couple of things it needs: jet40, mdac28,vbrun6. The program has a problem using the IPicture interface. I've been looking all over the net and a couple of posts on the topic seem to indicate they are in stdole.dll. I haven't found a place to download it. Microsoft says they are in the MSOffice installation and is not redistributable.

So, is stdole.dll included in wine? Is it compatible with WinXP? Other posts seem to indicate there was a change going to Windows 7 that somehow broke this for WinXP apps in Windows 7.

Any help on stdole.sll and anything needed to get the IPicture and IPicturedisp interfaces into wine would be greatly appreciated!

Thanks!
fargodwe

Re: stdole.dll IPicture

Post by fargodwe »

Well, first off is there some way to EDIT a previous post you made? I wish I could do that now, Since I can't figure it out I'll add here:

Tried copying the stdole.dll file from the c:/Program Files/Common Files/Microsoft Shared/MSEnv/PublicAssenblies to the windows/system32 folder for the prefix. Still no go. Everything I have found indicateds that the ipicture interface is part of stdole,dll.

EDIT 5/14/18 11:52 p.m/ :

When I look at the Microsoft for IPicture they don't show the information in the log file:

0009:fixme:olepicture:OLEPictureImpl_FindConnectionPoint no connection point for {33ad4f92-6699-11cf-b70c-00aa0060d393}

I noticed it is referring to OLEPictureImpl - not on the IPicture page - is this perhaps something wine has done to provide some of the functions that would be in stdole.dll?:
User avatar
DarkShadow44
Level 8
Level 8
Posts: 1207
Joined: Tue Nov 22, 2016 5:39 pm

Re: stdole.dll IPicture

Post by DarkShadow44 »

Yes, you can edit a post (there is an edit button) - but only for a few hours after posting. This is to prevent abuse AFAIK.

AFAIK stdole is an interopt assembly.
What you're looking for is oleaut32.dll - that's where OLEPictureImpl_FindConnectionPoint is used.
You need to
1) copy it into WINEPREFIX system32
2) add a dll override

Side note: IPicture is a COM interface. The interface then has a default implementation, in wine that's OLEPictureImpl.

I tried it, and it works after "winetricks -q jet40" and what I said... At least until it then crashes.

You might want to open a bugreport for that oleaut32 issue, and the following crash.
fargodwe

Re: stdole.dll IPicture

Post by fargodwe »

DarkShadow44 wrote:Yes, you can edit a post (there is an edit button) - but only for a few hours after posting. This is to prevent abuse AFAIK.

AFAIK stdole is an interopt assembly.
What you're looking for is oleaut32.dll - that's where OLEPictureImpl_FindConnectionPoint is used.
You need to
1) copy it into WINEPREFIX system32
2) add a dll override

Side note: IPicture is a COM interface. The interface then has a default implementation, in wine that's OLEPictureImpl.

I tried it, and it works after "winetricks -q jet40" and what I said... At least until it then crashes.

You might want to open a bugreport for that oleaut32 issue, and the following crash.
I'll be giving that a try shortly. I did find a download for dcom98 which includes all of that and recreated the wine prefix as windows 98, however the install of dcom98 fails saying it's only for Windows 98 and that I need the NT version. So, I need to find a download for an older version of aoleut32.dll (I did try what you suggest earlier with the copy of oleaut32.dll from Microsoft but it didn't help the problem).

Thanks!
User avatar
DarkShadow44
Level 8
Level 8
Posts: 1207
Joined: Tue Nov 22, 2016 5:39 pm

Re: stdole.dll IPicture

Post by DarkShadow44 »

fargodwe wrote:I did find a download for dcom98 which includes all of that and recreated the wine prefix as windows 98, however the install of dcom98 fails saying it's only for Windows 98 and that I need the NT version.
Why dcom98? This shouldn't be needed.
fargodwe wrote:So, I need to find a download for an older version of aoleut32.dll (I did try what you suggest earlier with the copy of oleaut32.dll from Microsoft but it didn't help the problem).
Did you make sure to add the dll override? I used the version from XP and it worked just fine. Also did it already with the Win7 version. And what exactly does "not work" mean?
fargodwe

Re: stdole.dll IPicture

Post by fargodwe »

I removed the old wine prefix, then recreated a 32-bit wine prefix - the default was Windows 7. I downloaded oleaut32.dll from http://www.mdgx.com/add.htm#ADD - perhaps I got the wrong version? I did the override so it shows as native,builtin.

I am working on this for another user who is having problems getting something called "IFs" - something about international futures, whatever that means. It was written in VB6. It also needed jet40 and vbrun6.

When the program is executed it eventually aborts with the following being in the tail of the log:

Code: Select all

0009:fixme:olepicture:OleLoadPictureEx (0x136c824,774,0,{7bf80980-bf32-101a-8bbb-00aa00300cab},x=0,y=0,f=0,0x32eb10), partially implemented.
0009:fixme:olepicture:OleLoadPictureEx (0x1384204,774,1,{7bf80980-bf32-101a-8bbb-00aa00300cab},x=0,y=0,f=0,0x32e28c), partially implemented.
0009:fixme:olepicture:OleLoadPictureEx (0x1384204,140233,1,{7bf80980-bf32-101a-8bbb-00aa00300cab},x=0,y=0,f=0,0x32e25c), partially implemented.
0009:fixme:olepicture:OLEPictureImpl_get_hPal unimplemented for type 3. Returning 0 palette.
0009:fixme:olepicture:OLEPictureImpl_SaveAsFile (0x297b068)->(0x2b92548, 0, (nil)), hacked stub.
0009:fixme:olepicture:OLEPictureImpl_FindConnectionPoint no connection point for {33ad4ed2-6699-11cf-b70c-00aa0060d393}
0009:fixme:olepicture:OLEPictureImpl_Render Not quite correct implementation of rendering icons...
0009:fixme:olepicture:OLEPictureImpl_FindConnectionPoint no connection point for {33ad4f92-6699-11cf-b70c-00aa0060d393}
I've been searching all over the net. Some suggest it needs to be Windows XP and to install dom98 - this doesn't work in wine even with a 32-prefix defined as Windows XP - it says I am running Windows 98 but that the dcom98.exe file needs NT.

I've tried replacing and overriding ole.dll, stdole.dll, and several others with no change.

Any help would be greatly appreciated. I guess there is a possibility that there is a bug in some wine dll?

I was told it works fine in Windows XP, but not in Windows 7 on up with XP compatibility mode for the app.
fargodwe

Re: stdole.dll IPicture

Post by fargodwe »

So how would one go about filing a bug report on oleaut32.dll in wine?
User avatar
DarkShadow44
Level 8
Level 8
Posts: 1207
Joined: Tue Nov 22, 2016 5:39 pm

Re: stdole.dll IPicture

Post by DarkShadow44 »

fargodwe wrote:So how would one go about filing a bug report on oleaut32.dll in wine?
See https://wiki.winehq.org/Bugs#How_to_report. You go on bugs.winehq.org and enter all the necessary information.
fargodwe

Re: stdole.dll IPicture

Post by fargodwe »

Thank you! I did get an email back from the developer and he said they have never had any success with IFs in wine and that the only way they've gotten it to run is in a full virtual machine. I have also seen other references to this same problem in Linux for certain games and other apps. This would indicate to me that the is SOMETHING in wine that isn't quite right, but obviously I would have no clue. The developer did ask that if this gets to the point of running in wine they would appreciate knowing the steps that were taken.

I'll try to file the bug report and thank you so much for your help!
fargodwe

Re: stdole.dll IPicture

Post by fargodwe »

Found something that may help. The definition of IPicture set hpal at https://msdn.microsoft.com/en-us/librar ... s.85).aspx.

This goes along with the error I think is the root of the problem: the ipicture set hpal fails as shown in the log. This returns a palette of zero which is associated with the picture. I assume that the connection fails because no palette was assigned. According to the log the ipicture set hapl is " unimplemented for type 3". This would indicate to me that wine is missing the code to handle the ipicture set hpal with a type of 3. Where is this code?

If my research is correct, this is what is not implemented:
PICTYPE_ICON 3
The picture type is an icon. When this value occurs in the PICTDESC structure, it means that the icon field of that structure contains the relevant initialization parameters.

When the ipciture set hpal fails for this type (icon) then the return value is null. No wonder the connect fails - null values.
fargodwe

Re: stdole.dll IPicture

Post by fargodwe »

I kust tried thr oleaut32.dll file from thr Window 98SE disk. I ran winecfg and added it to the libraries with native,builtin and get the same error. So, I'm wondering if perhaps the override is not working for oleaut32.dll and hence apparently still using the wine built-in which apparently doesn't have all of the code. Is there any way to find this out?
User avatar
DarkShadow44
Level 8
Level 8
Posts: 1207
Joined: Tue Nov 22, 2016 5:39 pm

Re: stdole.dll IPicture

Post by DarkShadow44 »

Did you add it properly? No misspellings and copied it into system32/syswow64 (depending on your prefix type)? Try setting it to native only, then it errors when it can't load the native dll.
Also, didn't try Win98 version, only the XP DLL.
fargodwe

Re: stdole.dll IPicture

Post by fargodwe »

Well, I went back to a 32-bit Windows XP prefix. As it turns out, the program only needs jet40 but not vbrun6. I tried installing the newest oleaut32.dll from dll-files and then found out I was supposed to register it as well. Did that, added it to the libraries as native/builtin. Tried the installer which bombed out on all kinds of messages and then a stack overflow. I then went back to the builtin and install ran ok. I then copy the newest version of the dll back into windows/system32 and ran regsvr32 on it. Tried running the application again and I *think* it may have gotten further as it now gives a message about IFsGUIprj.ocx or one of it's dependencies not being found or not registerd . I've searched the entire prefix for it and it doesn't exist. Searched the net - nothing. So, I dropped another email to the developer.

I have to thank you and the people at Bugzilla for the help on this. They are trying really hard to work with me there as well. I want to continue posting here in case someone else has this problem. In my searches of the forum and the net I have seen the original error mentioned many times for different applications and games. I'm curious if installing the newest oleaut32 (or 64 if there is such a thing) and registering it would help them.

Thanks again!
fargodwe

Re: stdole.dll IPicture

Post by fargodwe »

Dang!! Too late to edit previous post? Oh well. Turns out the IFsGUIprj.ocx was a red herring. The readme for the application had hidden down amongst it 900+ pages was a small blurb that said if you got that error to remove the application and reinstall it. So I did that - guess what? Back to the original error again. Darn.
fargodwe

Re: stdole.dll IPicture

Post by fargodwe »

Questions:

- where is OLEPicture defined in wine?
- Is it separate from oleaut32.dll

I'm just wondering since the error says OLEPicturexxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. When i've searched the net the procedures in oleaut32.dll are defined as IPicture, not OLEPicture.
fargodwe

Re: stdole.dll IPicture

Post by fargodwe »

This turned out to be a red herring. I had filed a bug in bugzilla and one of the people there did an amazing job of tracking down what was really wrong.

Thank you for your help here!
User avatar
DarkShadow44
Level 8
Level 8
Posts: 1207
Joined: Tue Nov 22, 2016 5:39 pm

Re: stdole.dll IPicture

Post by DarkShadow44 »

fargodwe wrote:Thank you for your help here!
You're welcome! Btw, that was me in the bugreport. :wink:
fargodwe

Re: stdole.dll IPicture

Post by fargodwe »

OH!! Well THANKS again!!!!
Locked