[DllImport("comdlg32.dll", SetLastError=true, CharSet = CharSet.Auto)]
static extern bool GetOpenFileName([In, Out] OpenFileName ofn);
<DllImport("comdlg32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Private Shared Function GetOpenFileName(<[In], Out> ByVal ofn As OpenFileName) As Boolean
End Function
None.
Please add some!
' Copyright
' Microsoft Corporation
' All rights reserved
'typedef struct tagOFN {
' DWORD lStructSize;
' HWND hwndOwner;
' HINSTANCE hInstance;
' LPCTSTR lpstrFilter;
' LPTSTR lpstrCustomFilter;
' DWORD nMaxCustFilter;
' DWORD nFilterIndex;
' LPTSTR lpstrFile;
' DWORD nMaxFile;
' LPTSTR lpstrFileTitle;
' DWORD nMaxFileTitle;
' LPCTSTR lpstrInitialDir;
' LPCTSTR lpstrTitle;
' DWORD Flags;
' WORD nFileOffset;
' WORD nFileExtension;
' LPCTSTR lpstrDefExt;
' LPARAM lCustData;
' LPOFNHOOKPROC lpfnHook;
' LPCTSTR lpTemplateName;
'#if (_WIN32_WINNT >= 0x0500)
' void * pvReserved;
' DWORD dwReserved;
' DWORD FlagsEx;
'#endif // (_WIN32_WINNT >= 0x0500)
'} OPENFILENAME, *LPOPENFILENAME;
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Auto)> _
Public Class OpenFileName
Public structSize As Integer = 0
Public dlgOwner As IntPtr = IntPtr.Zero
Public instance As IntPtr = IntPtr.Zero
Public filter As String = Nothing
Public customFilter As String = Nothing
Public maxCustFilter As Integer = 0
Public filterIndex As Integer = 0
Public file As String = Nothing
Public maxFile As Integer = 0
Public fileTitle As String = Nothing
Public maxFileTitle As Integer = 0
Public initialDir As String = Nothing
Public title As String = Nothing
Public flags As Integer = 0
Public fileOffset As Short = 0
Public fileExtension As Short = 0
Public defExt As String = Nothing
Public custData As IntPtr = IntPtr.Zero
Public hook As IntPtr = IntPtr.Zero
Public templateName As String = Nothing
Public reservedPtr As IntPtr = IntPtr.Zero
Public reservedInt As Integer = 0
Public flagsEx As Integer = 0
End Class 'OpenFileName
Public Class LibWrap
'BOOL GetOpenFileName(LPOPENFILENAME lpofn);
Declare Auto Function GetOpenFileName Lib "Comdlg32.dll" ( _
<[In](), Out()> ByVal ofn As OpenFileName) As Boolean
End Class 'LibWrap
Private Function ShowOpen(Optional ByVal filter As String = ("All files" & ChrW(0) & "*.*" & ChrW(0)), _
Optional ByVal title As String = "Open File Dialog...", _
Optional ByVal defext As String = "*", _
Optional ByVal path As String = "C:\") As String
Try
Dim ofn As New OpenFileName
ofn.structSize = Marshal.SizeOf(ofn)
ofn.filter = filter
ofn.file = New String(New Char(256) {})
ofn.maxFile = ofn.file.Length
ofn.fileTitle = New String(New Char(64) {})
ofn.maxFileTitle = ofn.fileTitle.Length
ofn.initialDir = path
ofn.title = title
ofn.defExt = defext
If LibWrap.GetOpenFileName(ofn) Then
Console.WriteLine("Selected file with full path: {0}", ofn.file)
Console.WriteLine("Selected file name: {0}", ofn.fileTitle)
Console.WriteLine("Offset from file name: {0}", ofn.fileOffset)
Console.WriteLine("Offset from file extension: {0}", ofn.fileExtension)
Return ofn.file
End If
Catch ex As Exception
Debug.Assert(False)
Return System.String.Empty
End Try
End Function
Prints time in seconds since last user input.
Save to idle.c
Compile at bash command line with: gcc -Wall idle.c
Test it with: sleep 15; ./a.exe
Moving the mouse or pressing the keyboard during the test will alter the result, as expected!
#include <w32api/windef.h>
#include <w32api/winbase.h>
#include <w32api/winuser.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main() {
int systemUptime = GetTickCount(); // was Environment.TickCount
int idleTicks = 0;
LASTINPUTINFO lastInputInfo;
lastInputInfo.cbSize = sizeof (lastInputInfo);
lastInputInfo.dwTime = 0;
if (GetLastInputInfo(&lastInputInfo)) {
int lastInputTicks = (int)lastInputInfo.dwTime;
idleTicks = systemUptime - lastInputTicks;
}
printf("%d seconds\n", (idleTicks > 0)? idleTicks/1000: 0);
return 0;
}
Contributed by John Refling