How has Windows API changed in the last 10 years? [closed] - windows

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 12 years ago.
I am interested in how Windows API has changed in the last 10 years since Windows 98 and Windows 2000? What interesting API calls have been added that you know? Also do people still write anything in API?
I am now learning everything I can about Windows programming and I am really curious about this. Because books don't explain everything, they just explain small subset of all API. And I want to know about the most modern things in Windows API.
So, my general question is where I can find a detailed WinAPI diff report for 98, 200, Xp, Vista and 7 versions?

There has been considerable change in the Win32 API in the past ten years. This link gives you API changes between XP & Vista and Vista & Windows 7. It's a large list.
All applications on Windows use the API, either directly (C/C++ calling into the existing Win32 API's and COM objects), or indirectly via a framework like MFC or .NET.

The real answer is that the core logic is unchanged. You can take a non-trivial Windows 1.0 source code and compile it for Windows 7 with minimal changes. You still have all the same basic building blocks:
window class creation;
window creation;
message loop;
window procedure;
resources for dialogs and menus;
windows styles;
many more
It is true that a lot of new APIs have been added, but the most common are still there. You do the same things in the same way.

One good way of finding out about some new APIs and why and how they were written can be to read the blogs of various Microsoft developers that is/has worked on Windows or related systems. Some examples:
Mark Russinovich- http://blogs.technet.com/b/markrussinovich/
Raymond Chen - Link
Larry Osterman - Link
There's still people writing pure Win32 applications, but maybe not that many since most applications don't need to be written at that level and can usually be written faster in a higher level. Many .Net applications etc will still call straight into various Windows API methods however when the .Net framework does contain the functionality they need.

Related

How To Tell What Software Tool Created An EXE File? [closed]

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 9 years ago.
Is there a way to determine what software tool was used to create a specific exe file? For example I'd like to find out if Delphi or Visual Studio or [Fill in the Blank] was used to create a program.
UPDATE:
I'm using a program called FoxtrotOne from www.enablesoft.com that uses a script and a datafile. The program acts just like a person sitting at the keyboard doing data updates. I've been continually monitoring the task manager and the FoxtroneOne.exe and the memory continues to climb as it loops through the dataset.
I've been told by the tech support guy to close IE after every 100 records because it's holding onto memory. My script interacts with a web application.
I'm convinced that there is a memory leak within FoxtrotOne. If I could determine what IDE they used I could suggest what low level tool they should use. For example if Delphi created this exe then I would suggest they install madExcept to check for memory leaks.
FINAL UPDATE:
I used Exeinfo PE to detrmine FoxtrotOne was created with Visual Basic 5.0 - 6.0
Open the EXE in a hex editor (such as HxD), and you might get a lot of clues. For instance, if you find a lot of VCL-related strings like TLabel, TForm, etc., it is probably an Embarcadero tool.
You might also open the EXE in a resource editor (such as XN Resource Editor) to get more clues:

How are windows and the general Windows desktop drawn? [closed]

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 10 years ago.
I ask this question because I probably could research it within a few weeks, but I'm hoping there's someone here who's a lot more knowledgeable and could give me direction.
My question stems from a several year challenge in trying to make a remoting desktop software (just for fun). At first I sent simple PNGs of the entire desktop. Then I finally into a mirror driver capture (DFMirage mirror driver by DemoForge), which was super fast. But it's definitely not fast enough. I'm trying to implement caching by breaking up images into 16 by 16 tiles such that will be a lot of repeats and I only have to send the hash, but it's generally just kind of laggy and dissapointing.
I also have another recent project that involves API hooking. I'm currently hooking Direct3D in this other project. From C#, this means using a hooking library like EasyHook since C# is a managed language. I was wondering if I could apply this to my remote desktop project.
Question: Would it be possible to, and if possible how could I, hook gdi32.dll to redirect all desktop drawing to my application?
But wait, don't jump to answering just yet, because my question itself might be incorrect.
My ultimate goal, of course, is to transfer the screen efficiently from one computer to the other. Now, VNC and most remote desktop products work by transferring the screen as an image. As pixel data. While this is extremely flexible, it's definitely as slow as you can possibly get.
So my guess is that gdi32.dll draws everything that you see on the desktop. Is this correct? I think I'm wrong because DWM aero seems to use something more 'advanced'. So what does draw everything on the desktop? How are windows drawn?
My idea is, that if I can intercept all drawing functions, then I can go beyond the pixel-level and become like Windows Remote Desktop, where I'm sending drawing commands instead of the actual pixels.
If I'm completely amiss, then how does Remote Desktop "know" how to send these primitive drawing commands? The documentation says that Remote Desktop has a "underlying rendering engine" that can "understand" what's on the screen as these primitive drawing commands, but how can I get that too?
I'm looking for an answer that can give me a larger perspective on Windows internals at this graphical level and a direction on how to accomplish my goal (if it's even realistic).

Need to control the windows logon process [closed]

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 10 years ago.
I have an application I wrote in VB6 and it needs to run right after the user logs in but before the desktop actually loads. Why you ask, well I'll tell you. The VB app asks the user for some information that is validated against an external database. if the validation fails then the user should not be allowed to login, hence the VB app forces a logout. I've read some articles about msGina.dll and the logon process but I still am not finding a viable solution. any ideas on this one?
Ideally, you'd want to write your own GINA provider to modify the login mechanism in Windows. Understand, however, that this is a serious undertaking, will require you to write your code in C/C++ and you have to be very, VERY careful about how you build it so as to not open-up several backdoors and vulnerabilities and so that you don't destabilize the rest of Windows.
Your VB6 app is NOT the way to go in this scenario for a multitude of reasons, not least of which are the fact that it's pretty trivial to intercept and bypass your security mechanism entirely.
Buildng a login mechanism seems like a piece of cake until you REALLY start digging into how to build one that's rock solid and bomb-proof. I know this because I once lead a team building a custom GINA for a European government's secure desktops!
If you're certain you DO want to go build a custom GINA, then take a look at these overview articles:
Customizing GINA, Part 1
Customizing GINA, Part 2
A GINA is one option, but only for Windows XP. The equivalent for Windows Vista and later is a credential provider.
As an alternative, you can change the initial user process by changing the Userinit value in this registry key:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
If you do this, make sure your application launches userinit when it is done, or the user's shell won't be started. Note that this will not prevent knowledgeable users from bypassing your application, at least not without further steps.
A credential manager can interact with the user during the logon process, but I don't believe it provides any direct way of rejecting the logon. It might be possible to hack something together but I wouldn't recommend it.
I believe a group policy client-side extension is capable of rejecting a user logon, but I'm not familiar with this technology.
This is a very strange approach to security, you could take a look at the "Autoexec.bat" file although I haven't messed around with this myself. Either way I suspect the user could probably "End Task" your VB6 app from the task manager and head about their merry way.

What are the benefits of Windows 7 for software developers? [closed]

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 13 years ago.
I'm trying to make the case for upgrading my development machine to Windows 7 - I'm currently on Windows XP 32bit.
I've already identified the fact that moving to a 64bit OS should help performance by allowing me to max out the amount of RAM in my system.
But what other features new to Windows 7 are a boon to software developers?
On modern hardware, it is faster than both XP and Vista in just about every task -- booting, copying, launching programs. It also uses multicore CPUs more efficiently than XP.
I've also found that the search feature on the new Start menu saves a ton of time that I usually spent looking for files in XP.
As far as actual development goes, I know Eclipse has a native 64-bit version. Visual Studio doesn't have one though. In any case, 32 vs. 64 bit probably won't have any noticeable performance differences when you're using your IDE.
64bit will only really help you if you go beyond 4GB mark.
I don't know what you development platform is, but it would be probably fair to say that all new platforms will be thoroughly tested on Windows 7.
Also, you may want to read this article if you are interested in what Windows 7 gives you as a developer:
http://sdtimes.com/link/33856
It's my impression that many IT departments eschewed upgrading to Vista because of compatibility worries but will probably embrace Win7. That said it would behoove a programming shoppe to develop for Win7 simply because that market segment will grow. It's still early but i doubt Redmond would produce two stinkers in a row... Well, Win98 and Me were quite the tandem...
I've found the new Explorer and start menu search quite useful (most of this was already in Vista)
Also, it will encourage you to take advantage of Windows 7's new taskbar features in your programs.

RealBasic to write Windows applications? [closed]

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 9 years ago.
Before I go ahead and invest time checking out RealBasic (now Xojo), I'd like some feedback from people who have moved on from VBCLassic and use the Windows version of RealBasic to write professional business applications.
Is the language good enough, are there enough third-party add-on's to solve the inevitable shortcomings, etc.?
Thank you.
I was never a big VB6 developer, but I have used VB.NET quite a bit. REALbasic is a great substitute for creating desktop applications, but there are some things it cannot do, such as create DLLs or COM objects.
The REALbasic language is significantly more robust than VB6: it's fully object-oriented, has introspection/reflection and even has some dynamic capabilities. The IDE is a lot nicer than the VB6 IDE. But VB6 is 10 years old now and REALbasic is updated regularly, so it ought to be better.
There is a weakness in the 3rd party control market. You won't find anything as good as the grid controls available to VB6, for example. Reporting has been a weak area until recently. REALbasic itself now includes reporting capabilities and there are several 3rd party reporting tools available.
I've created quite a few professional business apps for Windows using REALbasic, but I do all my development on Mac OS X and use VMware Fusion and REALbasic's remote debugger to test and debug on Windows XP/Vista/7.
Update: As of 2013, REALbasic is now known as Xojo (the language is the same, though).
The answer to your question is YES. RB is Great for Desktop Apps. YES there are a bunch of third party add in, however, you don't really need them. You can do everything you want in RB. If you do want to benefit from 3rd Party products (why reinvent the wheel), there are plenty, and the support group is awesome.
REALbasic is free on linux. Install a dual boot system on your PC. Ubuntu would be a good bet here.

Resources