Fwd: TrackPopupMenuEx not fully implemented

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



FYI

---------- Forwarded message ----------
From: Steven Woody <narkewoody@xxxxxxxxx>
Date: Nov 17, 2006 10:17 AM
Subject: Re:  TrackPopupMenuEx not fully implemented
To: "L. Rahyen" <research@xxxxxxxxxx>


On 11/16/06, L. Rahyen <research@xxxxxxxxxx> wrote:
On Thursday November 16 2006 05:56, you wrote:
> i've read the wine doc got a confusion unclear, some part of the doc
> say that c:\windows\system used to place fake Dlls which are only for
> fooling some applications of file existence checking, native Dlls will
> rather be used when the application really call the functions
> associated with these fake Dlls.

        Personally I don't recommend you put somewhere fake dlls. I even don't know
real-world applications that really check for existence of files without
checking content. Typically program wants to load dll. By default builtin dll
is loaded. If there is no builtin dll, Wine searches native ones in system or
system32 directories (also it searches current directory and other that in
your path for searching dlls).
        In simple words. You may safely copy all your dlls from Windows to Wine
directories. This will not harm anything. But Windows have dlls that Wine
havn't yet builtin like MFC (many applications need different versions of it)
and others. If you want to copy every dll from Windows to Wine, good idea to
copy them to system if Windows have them in system, and to system32 directory
otherwise (and this is right for most dlls). Theoretically you can copy dlls
to everywhere when Wine tries to find them, including current directory. But
in practice some stupid applications tries to load dlls from typical Windows
location instead to use standard API for load them. That means if dll locates
in other place that is not typical for Windows, application will fail. This
rare case, most application use legal API. But anyway I recommend you to put
dlls in directories where Windows have them.
        You can edit registry to set dll overrides or use winecfg. Using winecfg is
trivial so I tell you how edit registry - this is faster if you have
experience. Go in console and execute:
        nano ~/.wine/user.reg
        This opens my favorite console text editor. If you don't like console editors
you may use GUI-editors like kate, kwrite, kedit or anything you like. If you
use nano like me them press Ctrl+W (for GUI-editors Ctrl+F) and type
"overr" (without quotes) and then enter. Now you see your dlls overrides. If
you nothing found then you may want to paste "[Software\\Wine\\DllOverrides]
1156473935" somewhere you like and press enter (so now cursor is on new
line).
        Default setting for all dlls is "builtin,native" - that means if Wine have
builtin it will use it and ignore native dlls if you put them to system or
system32 directory. If there is no builtin it will try to find native one.
This work well for most cases. But sometimes you want override this. For
example I don't like builin comctl32 because it incorectly works if you use
non-default color theme with Wine applications. So I type
"comctl32"="native,builtin" - (WITH quotes - this is important) that means I
want to load native dll if it exists and use builtin only if native one isn't
found. If you followed this instructions you now have something like this
within user.reg:

WINE REGISTRY Version 2
;; All keys relative to \\User\\S-1-5-4

[Software\\Wine\\DllOverrides] 1156473935
"comctl32"="native,builtin"

[Control Panel\\Colors] 1156502551

        Other strings shown for clarity. Now if you put comctl32.dll from Windows to
wine system or system32 directory it will load it instead of builtin one.
        Also to be sure that dlls searched in directories where you placed them open
~/.wine/system.reg and search for
"[System\\CurrentControlSet\\Control\\Session Manager\\Environment]" (without
quotes). You must found below it something like this:

"ComSpec"="c:\\windows\\system32\\wcmd.exe"
"NUMBER_OF_PROCESSORS"="1"
"OS"="Windows_NT"
"PATH"="c:\\windows\\system32;c:\\windows"

        You want to change "PATH" (with quotes). For example change it like this:

"PATH"="c:\\windows\\system32;c:\\windows;c:\\windows\\system"

        Now Wine will search current directory, C:\windows\system32, C:
\windows\system and C:\windows for dlls and other files. This is recommended
settings.

> and, when will the wine really load them?

        Good question. Run following command:

WINEDEBUG="+loaddll" wine Program.exe

        Where Program.exe your program. It will show now what dlls it use with
program: builtin ones or native. Note that some dlls always builtin no mean
what dll overrids you set. This is normal for ntdll, kernel32, user32 because
native ones cannot be used anyway. Using this command you may easy see what
dlls application uses and make sure that native dlls is used where you want.

        Hope my instructions are helpful to you...


Dear Rahyen

thank you. i now totally understand and i am happy i've also learned
about how to bypass winecfg GUI.

please ignore another mail i post hours ago, your instruction has
already answered the question.

--
woody

then sun rose thinly from the sea and the old man could see the other
boats, low on the water and well in toward the shore, spread out
across the current.


--
woody

then sun rose thinly from the sea and the old man could see the other
boats, low on the water and well in toward the shore, spread out
across the current.

_______________________________________________
wine-users mailing list
wine-users@xxxxxxxxxx
http://www.winehq.org/mailman/listinfo/wine-users

[Index of Archives]     [Gimp for Windows]     [Red Hat]     [Samba]     [Yosemite Camping]     [Graphics Cards]     [Wine Home]

  Powered by Linux