Looking for a little help with the win32 headers

Belly via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Mar 26 18:27:24 PDT 2015


On Thursday, 26 March 2015 at 17:41:37 UTC, rumbu wrote:
> On Thursday, 26 March 2015 at 16:46:06 UTC, Belly wrote:
>> No, wait, the first code is even better because it uses the 
>> headers so I don't need to declare the API myself and it uses 
>> the MAX_COMPUTERNAME_LENGTH define, too, nice!
>
> Using this will return only the first 15 characters of the 
> computer name, if longer.
>
> Please use the unicode version of the function GetComputerNameW 
> instead of the ANSI one (GetComputerNameA), because the second 
> one has a known bug, returning always 0 as required buffer size.
>
> import std.stdio;
> import std.c.windows.windows;
>
> wstring getComputerName()
> {
> 	enum ERROR_BUFFER_OVERFLOW = 111;
> 	uint size;
> 	if (GetComputerNameW(null, &size) == 0 && GetLastError() == 
> ERROR_BUFFER_OVERFLOW)
> 	{
> 		wchar[] buf = new wchar[size];
> 		if (GetComputerNameW(buf.ptr, &size))
> 			return buf[0 .. size].idup;
> 	}
> 	return "Unknown";
> }
>
> int main(string[] argv)
> {
> 	writeln(getComputerName());
> 	getchar();
>     return 0;
> }

I changed the code to use GetComputerName, so I guess 
GetComputerNameA is actually used, right? Anyway it's not really 
important, I'm just playing around with winAPIs to get a feel of 
things. I'm making a simple health cheat for a game I've written 
in FreeBasic!

I'm going through a nice D2 tutorial here:
http://ddili.org/ders/d.en

If anyone reading this can save me some time and help me with 
this: How to declare a byte pattern, for example to pass to 
WriteProcessMemory?

I guess it's uint[] bytes;
How do I set it to 0x12345678 ?


More information about the Digitalmars-d-learn mailing list