Desktop Info 64-bit Development

Forums Desktop Info Desktop Info 64-bit Development

Tagged: 

Viewing 20 reply threads
  • Author
    Posts
    • #3962
      Glenn
      Keymaster

      Desktop Info is 16 years old. When I started the project the compiler I was using, Delphi 5, was state of the art. I continue to use it because it continues to build tight and efficient machine code. However, it’s not so much state of the art anymore, it is 32-bit only and that is no longer acceptable.

      I’ve had a couple of goes at compiling a 64-bit version of Desktop Info in the past. Obviously, I failed both times.

      The first attempt was using the community version of Embarcadero Delphi (the paid version is prohibitively expensive and I fit the criteria for the Community Edition). It is so vastly different from the Delphi 5 I’ve been using for all these years that it was very disorientating. My approach was to just keep fixing code until it compiled and then move on to the next compiler error and fix that and so on. After two solid days there was no end in sight and I gave up.

      Later I tried the approach of moving up the Delphi chain one version at a time and installed Delphi 7. The end result was pretty much the same.

      However I am determined to drag this project kicking and screaming into the 21st century so I’m going to try again. My plan at this stage is to restrict DTI development to bug fixes only while I’m working on the 64-bit version.

      I’ve bought a new development computer so I can install Embarcadero and do the upgrade without corrupting the development environment of the current 32-bit version. Any changes to the 32-bit version will be applied to the 64-bit version as I go. The plan of attack for getting it to compile is to simply disable code that doesn’t compile and move on. That will mean functionality will be disabled for a while but it will get me to the goal quicker and hopefully by then I can see the big picture of what changes need to be made in terms of components, win32 api and internal code.

      When I get a 64-bit compile that actually works, I’ll post a link to a test copy in this thread for you to test. There will be big changes to the code so I’ll need as many testers as possible to test it for me. If you do decide to test it, please leave a note here so I can get an idea of how many people are testing it. Bug reports for that test version should be made in this thread so we can keep it all together.

      Feel free to ask questions or make suggestions.

      • This topic was modified 1 month, 1 week ago by Glenn.
      • This topic was modified 3 weeks, 6 days ago by Glenn.
    • #3964
      rtruss
      Participant

      Looking forward to it Glenn! Keep up the great work.

    • #3970
      Glenn
      Keymaster

      During the last attempt at upgrading the compiler I identified the chart component as something that will need to be replaced. So, while I’m waiting on the new dev computer, I’m writing the next version of DTI charts. This is what I’ve come up with so far.

      • This reply was modified 1 month ago by Glenn.
    • #3974
      Nathan_K
      Participant

      Hi Glenn,

      I’ll be happy to help with testing. And for the record, the new chart options look pretty good, although; I like the filled bar chart look better than the outline only version.

    • #3976
      Glenn
      Keymaster

      I’ve been slogging it out most of the week on this beast and I can report I’ve made better progress than on previous attempts. Here is a mainly functional test build. The zip contains a 32-bit build and a 64-bit build. The chart code is completely new and the navigation buttons are new and probably other stuff that escapes me. There is a metric tonne of changes to the code to make it compile. There is a bunch of stuff that’s been disabled because it’s hard and I’ll get to it later. The old 64-bit tool loaded by the “desktopinfo64” option is gone, yay! But it does mainly work so it’s encouraging!

      Let me know if you’re testing it and try it on as many different versions of Windows as you can lay your hands on.

      TO DO:
      PROCESSMEM handles
      PROCESSCOUNT handles
      RDS sessions
      CPUUSAGE
      XML handling
      HTTP handling

      https://www.glenn.delahoy.com/downloads/desktopinfo/alpha/DesktopInfo300a1.zip

      • This reply was modified 4 weeks, 1 day ago by Glenn. Reason: Add download link
      • This reply was modified 4 weeks, 1 day ago by Glenn.
      • This reply was modified 4 weeks, 1 day ago by Glenn.
    • #3980
      rtruss
      Participant

      So I have installed it on WIN 10 20H2 and I have a question on the battery config in the ini.

      # battery status lookup table
      set=key:battery1,value:Disconnected
      set=key:battery2,value:Connected
      set=key:battery3,value:Fully Charged

      I never see it change to Fully Charged or Disconnected

      when on AC power it says connected but when I undock it the display changes to %battery<null>%. I also now noticed it in v 2.10.2

      Did I miss something in my ini file? I attached a pic of what it does when running on battery as well as a copy of my ini.

      Thanks for all your work and any guidance.

      • This reply was modified 4 weeks, 1 day ago by rtruss. Reason: renamed the ini to txt so it would upload
      • #3984
        rtruss
        Participant

        Turns out that when I undock my Surface from the keyboard and only have 1 (ONE) battery DI displays as it should. I attached the outputs from wmic when I manually check battery info. DI just does not like multiple batteries, at least not the way Microsoft has done it in the Surface Book line. 🙁

        • #3987
          rtruss
          Participant

          I looked over the battery class info (https://docs.microsoft.com/en-us/windows/win32/cimwin32prov/win32-battery) and nothing seems to apply for a situation(at least as far as DI is concerned) where you have 2 batteries and only one is in use, generally how it should be. When this is the case battery status for one battery is empty/null and DI does not have a provision for that. It sees that the battery is indeed there but does not know it’s status. Has anyone come across this and figured out a way to address it?

      • #3988
        Glenn
        Keymaster

        try modifying the lookup table:

        # battery status lookup table
        set=key:battery1,value:Disconnected
        set=key:battery2,value:Connected
        set=key:battery3,value:Fully Charged
        set=key:battery<null>,value:Not In Use
        • This reply was modified 4 weeks, 1 day ago by Glenn.
    • #3991
      Glenn
      Keymaster

      VERSION 3.0
      new line chart code, the horizontal bar remains
      the old line2 is replaced with the following chart types
      line bar scatter filled 3d (3d doesn’t look good on 1 line)
      new chart options
      points = number of data points on the chart (replaces frequency)
      border = border visibility

      added new function Rnd() to the mathematical functions (great for testing charts!)
      replaced navigation button component
      replaced png image component
      replaced cpu usage code
      removed desktopinfo64 option

      CPUUSAGE
      rewritten to use Pdh Api rather than the registry
      can anyone confirm the maximum number of cores this can display

      CPUCOUNT
      rewritten, this returns the same metric 2 different ways
      %1 from GetSystemInfo
      %2 from performance counters (Pdh)

      TOPPROCESSMEM
      rewritten, external tool no longer used
      counter = sort top process by:
      ws (working set)
      pu (private usage) (default)

      PROCESSMEM
      rewritten, external tool no longer used
      %1 working set
      %2 page file usage
      %3 page faults
      %4 cpu
      %5 private usage (commit size)
      %6 handles
      %7 threads
      as far as i can tell, page file usage and private usage are the same thing

      PROCESSCOUNT
      rewritten to use Pdh Api, external tool no longer used
      %1 total number of processes
      %2 total number of handles
      %3 total number of threads

      remember when comparing Desktop Info against Task Manager, make sure
      you run Desktop Info as admin.

      TO DO:
      RDS sessions
      XML handling
      DTI item

      https://www.glenn.delahoy.com/downloads/desktopinfo/alpha/DesktopInfo300a2.zip

      How to know if an application is 32-bit or 64-bit
      https://www.digitalcitizen.life/3-ways-learn-whether-windows-program-64-bit-or-32-bit/

    • #3999
      Glenn
      Keymaster

      If no-one has any test reports then I can only assume I’m an amazing programmer and so I expect to publish the first version in the next few days.

      • #4000
        rtruss
        Participant

        Still getting my ini ironed out. Our help desk would like it to be a bit smaller so I am working on using pages. One thing I noticed is that the DOAMIN item is not populating the info and when I switch from page to page it is not staying in the location I have told it to. It bounces around the screen in to different locations, not all the time but most times. I am thinking its because its working on populating that page and once it has data it seems to stay put. Other than that it seems to be working well.

        I liked the idea of the firewall showing as active or inactive but being that we are using group policy for that the built-in locations will not work. Here is what I had to do, I also added Secureboot as our security team has it as a requirement, not that we should have issues but with win 7 to win 7 upgrades many still do not have this enabled.

        # Windows firewall status (GPO Based)
        REGISTRY=interval:600,tree:0,text:Domain Firewall,key:HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsFirewall\DomainProfile\EnableFirewall,display:Status: %1[b:Active:Not Active]
        REGISTRY=interval:600,tree:0,text:Private Firewall,key:HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsFirewall\PrivateProfile\EnableFirewall,display:Status: %1[b:Active:Not Active]
        REGISTRY=interval:600,tree:0,text:Public Firewall,key:HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsFirewall\PublicProfile\EnableFirewall,display:Status: %1[b:Active:Not Active]

        #Secureboot/UEFI status
        REGISTRY=interval:600,tree:0,text:Secure Boot Status,key:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecureBoot\State\UEFISecureBootEnabled,display:%1[b:Enabled:Disabled]

        I am still working on trying to get the battery item to work when not plugged in and there is more than 1 battery but that is not a result of this new version that was happening previously as well. that is not at all a big deal just something I THINK people would like but that is just me.

        Thanks Glenn for ALL your great hard work on this toolset! 🙂

        • #4002
          Glenn
          Keymaster

          Thanks for the report.

          The bouncing is something I’ve never seen. How have you set up the position in the [options] ?

          Fixed the DOMAIN item. I suspect there might be others like that. I stole your secure boot item 🙂

          The battery is just a WMI lookup. Whatever WMI returns is what you see. Have you checked with WMI explorer?

          • #4003
            rtruss
            Participant

            As to battery, I ran a generic wmic lookup and added every entry to my ini file so i could really see what is happening. Just need to setup all of them to display yet. here is what wmic pulled out:

            # battery status lookup table
            set=key:battery,value:Not in use (this is a best guess as battery0 did nothing)
            set=key:battery1,value:Charge Left
            set=key:battery2,value:AC Connected
            set=key:battery3,value:Fully Charged
            set=key:battery4,Value:Low
            set=key:battery5,value:Critical
            set=key:battery6,value:Charging
            set=key:battery7,value:Charging and High
            set=key:battery8,value:Charging and Low
            set=key:battery9,value:Charging and Critical
            set=key:battery10,value:Undefined
            set=key:battery11,value:Partially Charged

            as to positioning, this only happens with nav enabled and only on the new version as I have not tried it with 2.10 yet. Here is my setup for that:

            # position on the screen
            bottom=5
            right=5
            #centerv=0
            #centerh=0

            • #4005
              Glenn
              Keymaster

              re positioning.

              the only thing i notice is the top goes up as the thing populates. this is to be expected when it’s anchored to the bottom.

    • #4004
      rtruss
      Participant

      Just now noticed your post regarding battery and the use of <null> and

      set=key:battery<null>,value:Not in use

      was the ticket!!! 🙂

    • #4006
      Glenn
      Keymaster

      All going well, I expect to publish the first v3 release in the next few days.

    • #4007
      Nathan_K
      Participant

      I’m trying out DesktopInfo64.exe (3.0.0a2) and I’m finding that “active:0” doesn’t seem to actually disable stuff.. at least not properly.

      • #4008
        Glenn
        Keymaster

        That’s true. I’ve removed that option. You set the page using the PAGE keyword and disable it by just commenting it out with the #

    • #4012
      Nathan_K
      Participant

      TOPPROCESSCPU seems to display almost all the processes, not just the TOP usage process. And CPUUSAGE (multi-core status) still seems to be in the works, is that correct?

      • #4018
        Glenn
        Keymaster

        I’m not sure what you mean by “almost all the processes”. I think I’ve rewritten CPUUSAGE since a2.

        I’m close to finishing, will be testing on a bunch of Windows versions today. I’ve already discovered this won’t run on Windows 2000.

    • #4013
      Nathan_K
      Participant

      Also just noticed that the IPv6 address info isn’t displaying accurately. See attached screenshot. Forgive the blurred content, as I’m hiding identifying content.

    • #4015
      Nathan_K
      Participant

      Looking at it further, the netmasks are off on the IPv4 and IPv6 as well.

      • #4020
        Glenn
        Keymaster

        hrm, there’s some interesting code in there….

    • #4019
      Nathan_K
      Participant

      Apparently TOPPROCESSCPU is now behaving. Might have been due to another part of the config that wasn’t happy before. I’ll let you know if I see it get weird again.

      • #4021
        Glenn
        Keymaster

        Ok. Network interfaces is another complete rewrite 🙁

    • #4022
      rtruss
      Participant

      is 3.0.0 a2 still the latest version?

      • #4024
        Glenn
        Keymaster

        I might put a3 up later today to test. I’ve done the network interface stuff but it would be good to get some feedback on that before we go public.

    • #4027
      Glenn
      Keymaster

      https://www.glenn.delahoy.com/downloads/desktopinfo/alpha/DesktopInfo3000a3.zip

      This is alpha 3. I believe I’ve got everything working. Now to find the obscure stuff…

    • #4037
      Nathan_K
      Participant

      Network section looks good now. See attached.

      • #4040
        Glenn
        Keymaster

        wow! nice side by side. thanks for that!

    • #4039
      Nathan_K
      Participant

      Hey Glenn,

      New issue I’ve noticed, and I’m not sure the cause. I have noticed my CPU has been running 10+% utilization and I checked and the WMI Provider Host is the cause. I checked the WMI event logs and found lots of errors as follow.

      Id = {00000000-0000-0000-0000-000000000000}; ClientMachine = NATHAN-DESKTOP; User = XXXXX\nkxxxxx; ClientProcessId = 11816; Component = Unknown; Operation = Start IWbemServices::ExecQuery - root\cimv2 : select * from Win32_PerfFormattedData_PerfOS_System; ResultCode = 0x80041017; PossibleCause = Unknown

      I check Task Manger and the process ID belongs to DesktopInfo. I don’t see anything in the config that is calling that WMI object, so I’m curious what is causing it. Is see the issue in v2.11 and 3.0, so I figure it is something that should be looked at.

      I also wonder if this error is a result of that PerfFormattedData_Temperature that I can’t pull anymore and it may be effecting other stuff.

    • #4048
      Nathan_K
      Participant

      Also just noticed that OSBUILD is different between them.

      • #4049
        Glenn
        Keymaster

        the major version is now correct but there’s a discrepancy in the build versions. Which is correct?

        Edit: The old one is correct. Fixed.

        • This reply was modified 2 weeks ago by Glenn.
        • #4051
          Nathan_K
          Participant

          The MAJOR build number is questionable, only because MS can’t make up their mind. If you open a CMD prompt, the version is displayed as follows.

          Microsoft Windows [Version 10.0.19043.1083]
          (c) Microsoft Corporation. All rights reserved.

          If you check the registry under HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion you’ll find that the CurrentVersion key is 6.3. The CurrentBuildNumber key matches correctly with what is displayed in CMD.

          Not sure if you’ve noticed in my screen shots, I’ve also started pulling the “DisplayVersion” key, which is what MS has been referring to their releases by recently, so I’ve been adding that in parenthesis after the build number.

          • #4053
            Glenn
            Keymaster

            Well I just know I’ll get flack if I leave it as version 6.

            Lessee:
            Product Name: Windows 10 Enterprise
            Current Version: 6.3
            Display Version: 21H1
            Release ID: 2009
            Current Build: 19043
            Build Lab: 19041

            A veritable plethora…

    • #4078
      Glenn
      Keymaster

      Well I’m pretty happy with where it is at the moment so in lieu of any further reports, I’ll make an official build tomorrow.

      Thanks everyone for your test reports.

Viewing 20 reply threads
  • You must be logged in to reply to this topic.
Glenn's Page