How to get verb for pin to taskbar in Windows 10? - c#

I'm trying to pin an exe to taskbar in windows 10. But I'm not able to find verb for pin/unpin to taskbar.
I have tried the same code on windows 7 and 8.1 machine, its working fine, but its not working on windows 10 machine.
VB Code:
Dim ShellApp, Desktop
ShellApp = CreateObject("Shell.Application")
Desktop = ShellApp.NameSpace("C:\ProgramData\ABC.exe").Parsename("ABC.exe").invokeverb("taskbarpin")

This issue was reported already (see also SO question).
And one possible solution (on the same page, re-posting it here):
Posted by Misha Rudiy on 11/5/2015 at 7:30 AM
For new OS installs you can still pin to the taskbar via the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\TBDEn registry key.
Example: In an SCCM Task Sequence, I have a batch script that runs after the "Setup Windows and Configuration Manager" step that basically contains reg-adds.
Syntax (REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\TBDEn" /v SBOEM0 /t REG_EXPAND_SZ /d "%%ALLUSERSPROFILE%%\Microsoft\Windows\Start Menu\Programs\Mozilla Firefox.lnk" /f)
You can add additional links by adding values and incrementing SBOEM0 to SBOEM1 etc.
Thanks to Wayne Ye http://www.codeproject.com/Articles/185512/Programmatically-PIN-shortcut-onto-Taskbar-on-Win7.aspx for pointing this method out back in 2011.
Somethings to note, there seems to be little public documentation on this. It most likely only works as a post imaging step (see my reference to SCCM), but I am not 100% sure. The above mentioned site states that it takes place during the DASH process. I wasn't able to find any documentation on how\when a DASH process works with Windows OSes. This may be information that is only privy to OEMS.

Related

Making custom tel protocol windows 10

I'm working on a custom softphone application and running into a problem. I would really like to redirect the tel: links to a application on my PC. I have figgured out I need to add my application to the windows TEL; URL:tel option list. However all solutions I'm finding don't seem to work. This documentation isn't working for me (yes i have restarted multiple times) some peaple say it isn't posible in windows 10 annymore, however there are a few third-party application that are popping up. The applictions are not from the windows store so that can't be the issue either.
The .reg export I ended up with looks like this:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\tel]
#="URL:Tel test"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\tel\DefaultIcon]
#="C:\\Test\\Test.exe"
[HKEY_CLASSES_ROOT\tel\shell]
[HKEY_CLASSES_ROOT\tel\shell\open]
[HKEY_CLASSES_ROOT\tel\shell\open\command]
#="C:\\Test\\Test.exe" "%1"
The goal vissual:
Inside the windows settings on the tel: protocol I would like to add my own application (written in C#)
When selected the .exe will be called al a tel: handeler.
I would really appriciate anny tips towards the solution.
you also need to add the software with the related capability.
Check here for the relevant registry keys:
https://newbedev.com/can-t-change-tel-protocol-handler-in-windows-10

Is there an alternative for the SendKeys class that will work with Windows 10

I cannot find any definitive information anywhere but the System.Windows.Forms.SendKeys class appears to have been blocked / disabled / depreciated in Windows 10.
I wrote a demo program that monitors the users keystrokes and if a user enters a known code it will pop up a form and then go off to a document database and return various strings (company names / addresses / contact lists etc) and replace the typed code with the retrieved string. SendWait is used to send the retrieved strings to whatever program typed the code.
I built the program on the companies Windows 7 desktops but when I ran it on my personal Windows 10 system it didn't work. A lot of reading later and I feel like a complete idiot but I cant let them take this project any further knowing that they wont be on Win7 forever.
So my question is has this sort of functionality definitely been disabled in Windows 10 or is there another way or method I would be able to use to achieve this behavior of inserting text into running programs.
Any help appreciated.
I found this Forum-Thread:
https://www.tenforums.com/software-apps/49635-sendkeys-not-working-windows-10-a.html
SendKeys is Blocked in W10. In W8.1 it still works.
There are other anoying things, like not allowing App to Read or Wright to Drive C. The "file" is there but W10 "hides" it or simply not allowing to access it.
There are Netwok problems also, not allowing App to work on LAN environement.
Well, my opinion is that W10 behaves like Malware to user PC. Useless.
They had no solution.
It looks as if Sendkeys works with some apps and not others. I can automate an older app by sending it keystrokes but newer apps like Chrome don't respond. The inconsistent behavior has seriously messed up scripts that worked fine under Win 7.
I have not found any official documentation that says that Sendkeys has been deprecated so the inconsistency looks to be a Windows 10 bug.

OL3-Cesium in WPF web browser control

I want to use OL3-Cesium to display the globe view in my WPF application using WebBrowser control.
The sample html file works fine in my IE 11 browser, but if I run the same file through WebBrowser control it gives a error saying that 'The browser supports WebGL but initialization failed' in Cesium.js.
I made my WPF application compatible with IE 11 by editing key in local machine in registry , but still it did not work.
Please help me out with some solution.
You mention making WebBrowser work more like IE11 using a registry key, but you probably need more than one. In particular:
FEATURE_BROWSER_EMULATION is needed to get IE11 compatibility and access to the WebGL API it provides
FEATURE_GPU_RENDERING is needed to enable hardware-accelerated 3D in the embedded window.
Note that Cesium uses failIfMajorPerformanceCaveat by default, which means that if GPU rendering isn't available, Cesium prefers to fail rather than try to run with software rendering. This can be overridden, but results are predictably bad, so use the GPU registry key instead.
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
"MyApplication.exe" : REG_DWORD = 11
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_GPU_RENDERING
"MyApplication.exe" : REG_DWORD = 1
Here's a great article that explains how to use these registry keys and embed WebGL apps:
http://zett42.de/software/2013/04/04/performance-issue-of-embedded-ie-browser-control-and-how-to-fix-it/
I also had the same problem. Almost all suggested solutions involved setting FEATURE_BROWSER_EMULATION to the current installed version of IE, but Cesium would still return the error The browser supports WebGL but initialization failed
What worked was turning off compatibility mode completely.
SetBrowserFeatureControlKey(
"FEATURE_BROWSER_EMULATION",
fileName,
00000)
And of course still turning on FEATURE_GPU_RENDERING
SetBrowserFeatureControlKey(
"FEATURE_GPU_RENDERING",
fileName,
1)

Run Application at window Login Screen

I have made C# winform keyboard that i need to run at windows login screen so that user can enter password to specific user account. the computer which is using this application doses not have physical kb.
i came across GINA some say this is the solution but there are discussions that it is only supports till win XP win vista and 7 has different scheme.
any ideas?
I don't think is this something you could write in .NET, per this thread. But GINA was replaced with Credential Providers.
There is a sample here.
Why not use the onscreen keyboard?
http://forums.techarena.in/customize-desktop/1131979.htm
If you're using windows vista or or windows 7 it already has an on screen keyboard. Just choose the "Ease of Access" icon and then check "Type without the keyboard"
I know this question is old but for those looking for a super quick and dirty way with C# to do this, and not use C++ or C:
Registry:
Modify HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\magnify.exe (Add it if you need to) and then add a String value to the key:
Debugger
Make Debugger value equal to the path to the exe you want to run. Just tested this solution with a C# application on Windows 7 and 10 and both work as expected (You must launch the Magnifier with Win+U, or use Easy of access center.
Here is the output of my registry for this key:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\magnify.exe]
"Debugger"="C:\\Path\\to\\exe\\application.exe"

Programmatically check whether Windows 7 is activated

Background:
I am creating system images that will be loaded onto several workstations. Windows activation will occur after the images are loaded onto the workstation. These computers will not be connected to the Internet and will be activated over the phone.
Question:
I would like to check programmatically if Windows 7 is activated or not, so that our software will not run if Windows 7 is not activated. Our software is written in C#.
The Software Licensing API - SLIAPI, take at look at SLIsGenuineLocal(). (Replaces LegitCheck)
You can run "Slmgr.vbs" on the machine and then redirect the output to check.
System.Diagnostics.Process.Start(#"cscript Slmgr.vbs > D:\\log.txt");
This will return all the information you need. Not the cleanest way to do it though.
You may check HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows Activation Technologies\AdminObject\Store\TotalValidations and see if it is 1. This may not be the definative way to verify activation, but you should at least be abel to see if it was validated.
You can use this reference: https://github.com/Marko97IT/CWA
In the README.md you can find the download link.
Not sure if it applies to Win7, but I found a post that checks XP for activation using a Win32_WindowsProductActivation class.
I'll build a test one on my machine (x64 Win7) and see if it returns activated or not, but at least gives you something to try out in the mean time.
EDIT (wish I kept reading the docs) A comment on that class page mentions that this class, on Win 7 and other versions) appears to be replaced with the Software Licensing Classes. I'll see if I can get a working result.

Categories