Jump to content
MSFN is made available via donations, subscriptions and advertising revenue. The use of ad-blocking software hurts the site. Please disable ad-blocking software or set an exception for MSFN. ×

TClock3 0.3.5

Recommended Posts

I took a look at it but it doesn't help me much. It looks like the global hook is on, which is strange since it should default to off. What happens if you run noglobal.bat instead of starting TClock3 directly? That should force TClock3 to start with the global setting off.

Also, did you have TClock2 previously installed? I'm wondering if you might have had something turned on from TClock2 that might not work properly in TClock3, like the something from the Alarm or Synchronize tabs (which I've never tried).

Edited by WildBill
Link to post
Share on other sites

No change, except for the DOS window that remains open. Should have two more commands: CLS and EXIT at the end of the file.

Dunno what else to do, I don't have an IDE set up and either way, I'm not a coder, so options are limited. However, if there's anything else I could do...

Yes, I have all kinds of versions installed. However none of them has any synchronization option enabled, nor any alarm set/enabled. And the first version I ever tried was TClock3 v0.2.5, so there were no previous settings to presumingly screw things up.

Edited by Drugwash
Link to post
Share on other sites

TClock3 shares the same registry settings area as TClock2. I suppose a brute-force method of ensuring a clean install if you had TClock2 installed previously is to delete the HKEY_CURRENT_USER\Software\TClock2 key in your registry, but it would mean that you would lose all your TClock2 settings as well (or perhaps just rename the key so you don't lose the settings).

Edited by WildBill
Link to post
Share on other sites

I renamed the registry key, renamed the ini that I had previously saved - nothing would work. Access violation pops up again and as before, no setting gets applied. There must be more to it.

Well, it's way past my bed time here, so I'll leave you think of other possible workarounds while I have a well-deserved sleep. Thank you for looking into the issue. Laterz!

Link to post
Share on other sites

I wiped an old hard drive and set up Win98SE with a development environment. The two things causing crashes were the links to SetLayeredWindowAttributes and the CPU monitor. I now have TClock3 running in Win98, but there are still some visual glitches. I think these are solvable and I'm working them one at a time. As I type this I have everything but the tray window being skinned, with some glitches in the task buttons. With luck I might get everything resolved tonight now that it's running.

Link to post
Share on other sites

I did some testing on a Win98 box and made some changes that get it to run (see the top of the thread for an updated download link). It's not as good as it is under Win2k, but it's worth testing. I have a whole new respect for Win2k now; Win98 is WAY more fragile. Compared to Win2k it crashes if you just breathe on it wrong.

Edited by WildBill
Link to post
Share on other sites

Thank you very much for working on it. I just tested 0.2.7 and it does start now. The options panel briefly flickered on start but it did not stay open. It opened fine from the clock's context menu. One thing I noticed immediately was that the taskbar has lost its auto-hide property, staying always on top, over the other windows' titlebars.

Another thing was that neither the tray icons nor the clock were visible; they were all covered by the skin (I use a WB skin), but the tray icons section was flickering when getting updated or hovered with the mouse.

One other thing I noticed is that the Start button caption wouldn't change to what was set in the preferences. After I tried to change and apply a few combinations, explorer crashed (short report below).

However, the whole taskbar was completely skinned, which never happened with older versions of TClock2 or TClock Light Unofficial (dunno if it was supposed to happen with those, though). That's great. :)

So - all in all - things are going the right way; you're doing a great job! :thumbup

EXPLORER caused an invalid page fault in
module TCLOCK3.DLL at 0187:014d1e83.
EAX=015dfff0 CS=0187 EIP=014d1e83 EFLGS=00010206
EBX=015b3610 SS=018f ESP=0080f098 EBP=0080f0c4
ECX=00000000 DS=018f ESI=0002c9ec FS=252f
EDX=0002c9ec ES=018f EDI=015b3610 GS=0000
Bytes at CS:EIP:
89 70 08 81 fe 00 10 00 00 7f 37 8b d6 85 d2 79
Stack dump:
015dfffc 015b3610 0002c9ec 014d2449 0080f0d4 014d2472 0080f0c4 015debfc 015b3610 0002b5ec 00000000 0080f0f0 014d1ced 014d1f33 014d23e5 0080f100

Link to post
Share on other sites

More feedback after some more testing (not intended as criticism - just reporting):

• A "ghost" taskbar button flickers when hovering folders in the Start menu (Programs, Documents, custom ones, etc).

• The start menu tries to get skinned, but all it happens is it gets black, with only icons visible - no text (black on black, possibly). That is not because of transparency, it wasn't enabled. Showing menus and submenus is painfully slow.

• Rebar arrows are not being painted.

• Clock tooltip doesn't show anymore (probably because of some skinning settings or because it's set to multiline).

• The whole desktop refresh is much more slower now when TClock3 has enabled icon label transparency and text shadows. However, machine specs are low - 800MHz CPU, 240MB RAM, 16MB video onboard (SiS630 chipset).

• Still unstable - explorer crashed again after changing a few settings. The options panel remained visible and functional, however no settings were being applied anymore. The TClock process remains in the memory and needs to be killed, as there's no other possibility to close it gracefully. After disabling Start Menu skinning, there was no more crash, and I made sure to play with settings a lot, so that must be the source of crashes.

• All in all, it's quite a memory hog - I couldn't even open MSPaint at one point, so I had to exit TClock3. One cause may be the cache, which was enabled. :)

Here's a screenshot of what I've been able to achieve so far:


Link to post
Share on other sites

LOL, you're testing with the same skin I did.

WindowBlinds skins don't normally come with rebar or start menu arrows, so I made some of my own and they come with TClock3. They use MagicPink transparency if you decide to use them.

I'm seeing the black-on-black problem as well, both on the start menu and on the taskbar buttons. It appears to be a problem with the subpixel anti-aliasing code and Win98. When I turn it off they draw properly and a lot faster. I haven't seen the ghost taskbar button yet or the memory usage. Is there a way to get a proper task manager in Win98? I've been using Win2k since 2001 so I'm not really familiar with Win98 anymore.

The problem with TClock3 still hanging around when Explorer crashes is a known problem. One of these days I need to get it to exit when that happens but to date is just hasn't been a high priority.

I have a lot of other things that I have to do today so I can't guarantee much but I'll try to learn what I can.

One other thing: you should turn the cache setting off. I had it disabled in the code since it was causing all kinds of instability issues in Win2k as well. I don't know if it's related to memory usage or to something else. I saw on the Win98 forum that there is another program that does some pretty incredible Win98 skinning, with "native skinning". I don't know if that technique would help me or not, but if someone could explain to me what is meant by native skinning I'd appreciate it.

Edited by WildBill
Link to post
Share on other sites

Here I go:

• I reported the rebar arrows issue precisely because I tried with one of yours (the white one) and it didn't show up under any circumstances.

• Subpixel antialiasing is (and always was) disabled here.

• The ghost task button appears only for a split second and is probably noticeable only on slow machines. It can be seen better when there are one or two task buttons on taskbar and the start menu folders are hovered continuously up and down (I have 10 custom folders in the start menu, including a cascaded Control Panel).

• For advanced task managing you could try CodeStuff Starter (freeware). FreeRAM XP Pro (freeware) can also monitor CPU, User and System resources in a simple way (can be seen in screenshot).

• I'm not sure what you're referring to by "native skinning", but in case it's about Tihiy's Revolutions Pack, maybe you could talk to him directly, it'd be much easier to exchange impressions and ideas.

Now to the news. Measurement of System | User | GDI resources (using FreeRAM XP Pro):

- 90 90 94 at startup

- 86 86 92 after ScreenGrab started

- 84 84 92 after Metapad started

- 53 53 79 after TClock3 started

- 25 25 79 after Explorer crashed

- 81 81 89 after killing TClock3 process

After more testing, the following problems were found:

• Task buttons are not properly resized when taskbar is moved from horizontal to vertical position and back (a few times).

• Clock tooltip will not show year unless it's using capital Ys (could be so by design).

• Left mouse clicks on clock are not detected; only right-click, opens the context menu.

• Tray/Clock Fill -> Fill Style shows clock only when set to "Fill tray" or "Skin tray"; other modes hide/cover the clock.

• After half an hour of enabling start menu skinning and tweaking settings: resources are 25 25 72. Just hovering the start menu and submenus a few times: 20 20 70. Cache is disabled. This may be a sign of GDI/resources leak.

• A very weird bug with a 2px horizontal line at the bottom of the start button is being drawn (modified) by the CPU and LOAD progressbars in FreeRAM XP Pro 1.52 when its window is open on desktop (see screenshot).

More weird is that the said line wouldn't act up if there's a tooltip showing for any of the icons in either taskbar or any custom toolbars.

It also wouldn't show if there's ScreenGrab open (so I can't take a quick screenshot). It also appears occasionally when other windows are open or when typing in a text file; could be a video memory issue?

• Custom toolbars on the side of the screen are not completely skinned: only icon backgrounds are skinned, the header is unchanged and the rest of the toolbar is transparent. Shouldn't be, in 98SE (I think), but I replaced gdi32.dll with the ME one and that added some previously nonexistant functions, including transparency (see screenshot).

• Submenus in the start menu are not getting skinned until hovered. However, large submenus (the cascaded Control Panel with 32 items and a custom one under Programs > Uninstallers, with 35 items) do get skinned instantly when shown.

• One separator in the start menu doesn't get skinned; probably there's no entry for it (between SymmTime and Programs, top-left in the second screenshot).

• The Task Manager entry in the context menu does nothing.

• When icon text is set to transparent and an icon is selected on desktop, the text background turns dark blue. Could this color be changed, at least to the default background color set in display properties if not to a custom one?

• Hmmm... just when I thought everything was OK and tried to close TClock3, it crashed Explorer. Maybe start menu skinning is not a good idea, for now. ;)

That's about all I can think of, right now. Gotta go to sleep. Cheers! :)

tclock3bugsaw8.th.png noskinseparatorfd1.th.png

Link to post
Share on other sites

hi guys, well wildbill.

i thought i give u some bugs and stuff.

but i see that it has allready be done.

the most things i have also here.

but the only thing that didnt work for me is the skinning of the tray and clock and the other windows.

the taskbar works prime!

tried it first with some bmp's.

not good, switched to wb skin, and voila!

so keep up the work man.

and maybe its a good idea to ask tihiy for assistance in the matter?

bye bye


Link to post
Share on other sites

This is a great project! I hope we'll be able to share expirience.

So far, it does not work neither on my XP (doesn't show interface) nor 98 (slowdown-eat all resources-hang). :}

Link to post
Share on other sites

It should run on XP. I tested it on XP Home SP2 and it ran for me, though the tray didn't paint correctly. While it runs on 98, it definitely doesn't play well with it and I probably have a GDI resource leak somewhere. I'll have to see if I can refactor the code to make resource leaks go away. One thing of note is that the interface doesn't show up by default -- you have to right-click on the clock and select "TClock3 Properties" to make it show up.

I went through the Revolutions Pack thread and I'm really impressed. You're making the whole OS over ;) I'd love to see if it can be ported to Win2k since that's all I run (except for testing specific problems that people point out). I saw that you were having problems getting it to run on Win2k -- I don't know how your software works but I wouldn't mind offering some help if I can. I use a local and/or global hook in TClock3; if you're doing something similar I can probably help at least a little since I had to deal with lots of OS issues already in getting TClock3 to run. At least maybe I can try to steer you around the pitfalls that I fell into :P

I also have a small alpha program in the XPize forum here called SmoothText that overrides Windows DLL behavior by using a global hook, loading the DLL that I want to override, using VirtualProtect() to allow changing the code, and altering it to point to custom routines. I don't know if you're attempting anything similar, but I've managed to make it pretty reliable on Win2k if that might help you. I don't know if Win98 can do what SmoothText does, but you surely know a lot more about 98 than I do. SmoothText tries to render *all* text in Win2k using sub-pixel aliasing (sort of a poor-man's ClearType™ without violating the patent). Subpixel-aliasing text was invented by Apple in 1981, so I've read, so it should be safe.

Edited by WildBill
Link to post
Share on other sites

I don't use global hooks because there is no reliable API hooking methods in 9x.

Instead, i hack system DLLs directly :whistle:

I swear now that i'll definitely make an Revolutions Pack version for 2000 too. AppInit_DLLs and VirtualProtect will help me.

As for subpixel font rendering - well, man, you rock! It is incredible, fast and stable. However, my eyes hurt - but that is minor detail :blushing:

I went through the Revolutions Pack thread and I'm really impressed.

I'm really impressed that you could read that all.

Link to post
Share on other sites

Thanks for the compliments. It's good to hear that you're interested in improving Win2k as well :) I'll be happy to share whatever I can if you need any help.

I went through every file in TClock3 from top to bottom and I located the GDI leak. It was actually Win98 problem -- apparently the Windows TransparentBlt() call has a GDI leak in Win95 and Win98. Fortunately TClock3 has a replacement for Win95, so I simply told it to use that for 98 as well. I also found quite a few other GDI and memory leaks in my code, and I put try...catch blocks around everything I could find that allocates something and deallocates it later. If there are any further leaks, they should be architectural in nature (such as having a finalization routine not get rid of everything that the corresponding initialization routine creates). I tested the newest version on my Win98 box and it's performing much better. I've updated the download link at the top to point to the new version.

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Create New...