CodeProject:
Introduction to Localization (link).
Microsoft articles regarding localizing MFC projects
http://support.microsoft.com/kb/832187
http://support.microsoft.com/kb/198536
http://support.microsoft.com/kb/198846/
~ts
Saturday, August 08, 2009
Windows name to ip resolution order
Oder of resolution for TCP/IP names to IP for Windows environment:
Resources:
Link 1
Link 2
~ts
- Local cached information. Can be cleared using ipconfig /flushdns.
- Hosts file
- DNS server
- NetBIOS over TCP/IP
Resources:
Link 1
Link 2
~ts
Wednesday, August 05, 2009
SHGetFolderLocation C++ sample code
Original code is from MSDN. Sample code demonstrates how to use SHGetFolderLocation in C++.
Need to link ShlwApi.lib to get this to work (Project Properties | Configuration Properties | Linker | Input | Additional Dependencies)
~ts
#include#include #include #include int main() { IShellFolder *psfParent = NULL; LPITEMIDLIST pidlSystem = NULL; LPCITEMIDLIST pidlRelative = NULL; STRRET strDispName; TCHAR szDisplayName[MAX_PATH]; HRESULT hr; hr = SHGetFolderLocation(NULL, CSIDL_DESKTOP, NULL, NULL, &pidlSystem); if (!SUCCEEDED(hr)) { std::cout << "hr bad" << std::endl; return -1; } hr = SHBindToParent(pidlSystem, IID_IShellFolder, (void **) &psfParent, &pidlRelative); if(SUCCEEDED(hr)) { hr = psfParent->GetDisplayNameOf(pidlRelative, SHGDN_NORMAL, &strDispName); hr = StrRetToBuf(&strDispName, pidlSystem, szDisplayName, sizeof(szDisplayName)); std::wcout << "SHGDN_NORMAL - " < << '\n'; } psfParent->Release(); CoTaskMemFree(pidlSystem); return 0; }
Need to link ShlwApi.lib to get this to work (Project Properties | Configuration Properties | Linker | Input | Additional Dependencies)
~ts
SHGetFolderLocation
Sample code on how to use SHGetFolderLocation, shamelessly copied from this link. This code was verified to work in Windows 2000 and VB SP6.
~ts
Private Declare Function SHGetFolderLocation Lib "shell32.dll" (ByVal hwndOwner As Long, ByVal nFolder As Long, ByVal hToken As Long, ByVal dwReserved As Long, ppidl As Long) As Long
Private Declare Function SHBrowseForFolder Lib "shell32.dll" (lpbi As BROWSEINFO) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Private Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal pv As Long)
Private Type BROWSEINFO
hwndOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type
Private Sub Command1_Click()
' This code is licensed according to the terms and conditions listed here.
' Open the Browse for Folder dialog box and display both the display name and
' the actual name of the folder (if it is not a virtual folder). Any folder under My Computer
' may be selected.
Dim bi As BROWSEINFO ' structure passed to the function
Dim pidl As Long ' PIDL to the user's selection
Dim physpath As String ' string used to temporarily hold the physical path
Dim retval As Long ' return value
' Initialize the structure to be passed to the function.
bi.hwndOwner = Form1.hWnd ' window Form1 is the owner of the dialog box
' Specify the My Computer virtual folder as the root
retval = SHGetFolderLocation(Form1.hWnd, CSIDL_DRIVES, 0, 0, bi.pidlRoot)
' Make room in the buffer to get the [virtual] folder's display name
bi.pszDisplayName = Space(260)
bi.lpszTitle = "Please choose a folder." ' Message displayed to the user
bi.ulFlags = 0 ' no flags are needed here
bi.lpfn = 0 ' no callback function is being used
bi.lParam = 0 ' not needed
bi.iImage = 0 ' this will be set by the function
' Open the Browse for Folder dialog box.
pidl = SHBrowseForFolder(bi)
' If the user selected something, display its display name
' and its physical location on the system.
If pidl <> 0 Then
' Remove the empty space from the display name variable.
bi.pszDisplayName = Left(bi.pszDisplayName, InStr(bi.pszDisplayName, vbNullChar) - 1)
Debug.Print "The user selected: "; bi.pszDisplayName
' If the folder is not a virtual folder, display its physical location.
physpath = Space(260) ' make room in the buffer
retval = SHGetPathFromIDList(pidl, physpath)
If retval = 0 Then
Debug.Print "Physical Location: (virtual folder)"
Else
' Remove the empty space and display the result.
physpath = Left(physpath, InStr(physpath, vbNullChar) - 1)
Debug.Print "Physical Location: "; physpath
End If
' Free the pidl returned by the function.
CoTaskMemFree pidl
End If
' Whether successful or not, free the PIDL which was used to
' identify the My Computer virtual folder.
CoTaskMemFree bi.pidlRoot
End Sub
~ts
Tuesday, August 04, 2009
Converting CString to CComBSTR
Code below shows how to convert CString to CComBSTR.
~ts
// CComBSTR.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include#include #include int _tmain(int argc, _TCHAR* argv[]) { CComBSTR szDbgMsg; CString sMsg; sMsg = _T("Hello world new"); sMsg.Format(_T("%s : %d"), sMsg, 12); //szDbgMsg = L"Hello world "; szDbgMsg = sMsg.GetBuffer(); CW2A printstr(szDbgMsg); std::wcout << ((CString)szDbgMsg).GetBuffer() << std::endl; std::wcout << sMsg.GetBuffer() << std::endl; return 0; }
~ts
List all installed applications in a machine
The script below will list and save all installed applications to a csv file. Save the script as say, save.vbs.
Note that this code was copied shamelessly from the internet, can't remember the exact link.
~ts.
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.CreateTextFile("c:\software.csv", True)
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colSoftware = objWMIService.ExecQuery _
("Select * from Win32_Product")
objTextFile.WriteLine "Caption" & vbtab & _
"Description" & vbtab & "Identifying Number" & vbtab & _
"Install Date" & vbtab & "Install Location" & vbtab & _
"Install State" & vbtab & "Name" & vbtab & _
"Package Cache" & vbtab & "SKU Number" & vbtab & "Vendor" & vbtab _
& "Version"
For Each objSoftware in colSoftware
objTextFile.WriteLine objSoftware.Caption & vbtab & _
objSoftware.Description & vbtab & _
objSoftware.IdentifyingNumber & vbtab & _
objSoftware.InstallDate2 & vbtab & _
objSoftware.InstallLocation & vbtab & _
objSoftware.InstallState & vbtab & _
objSoftware.Name & vbtab & _
objSoftware.PackageCache & vbtab & _
objSoftware.SKUNumber & vbtab & _
objSoftware.Vendor & vbtab & _
objSoftware.Version
Next
objTextFile.Close
Note that this code was copied shamelessly from the internet, can't remember the exact link.
~ts.
The system cannot execute the specified program
When running a console app written in VS 2005, and you are getting "The system cannot execute the specified program" on a target machine, then it can be one of the following:
a) Target machine does not have VC++ 2005 Redistribuable
b) Project settings may not be correct, see this link.
~ts.
a) Target machine does not have VC++ 2005 Redistribuable
b) Project settings may not be correct, see this link.
~ts.
Subscribe to:
Comments (Atom)
Install Winget on Windows 2022 or Windows 10 LSTC
Install Winget on Windows 2022 or Windows 10 LTSC Install Pre-reqs Install Microsoft.UI.Xaml/2.8.6 Navigate to https://www.nuget.org/pa...
-
Installing MonoDevelop in OpenSUSE 12.2 from its repository was very easy. When running it for the first time though I got the message: Th...
-
Tried to update my Ubuntu host today and it did pickup that new version of VirtualBox is available (4.1.8). All other packages installed pro...
-
This is quick start guide how to run ssh server on QNX. Tested on QNX 6.5 (650SP1-VM.tar). # ssh-keygen -t dsa -b 1024 -f /etc/ssh/ssh...