I'm unsure of the syntax for this. I'm trying to translate this C# code into F#.
struct LASTINPUTINFO
{
public uint cbSize;
public uint dwTime;
}
public class IdleTimer
{
[DllImport("User32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);
}
This is what I have so far.
type LASTINPUTINFO = {
cbSize : UInt32;
dwTime : UInt32;
}
type IdleTimer =
[<DllImport("User32.dll")>]
[<return: MarshalAs(UnmanagedType.Bool)>]
extern GetLastInputInfo(plii : LASTINPUTINFO ref)
In addition to Brian's comment, it may be worth pointing out that F# extern signatures reflect C signatures fairly faithfully, so that rather than using the [<In>][<Out>]
attributes on the reference you can probably just declare the parameter as LASTINPUTINFO* plii
, and then pass a reference to a local instance using the && operator when calling the function.
Honestly I haven't tried to run or use this, but this compiles, and hopefully will steer you in the right direction.
open System
open System.Runtime.InteropServices
[<Struct>]
type LASTINPUTINFO =
val cbSize : UInt32
val dwTime : UInt32
module IdleTimer =
[<DllImport("User32.dll")>]
extern [<MarshalAs(UnmanagedType.Bool)>] bool GetLastInputInfo([<In>][<Out>] LASTINPUTINFO plii)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With