March 27, 2008

Sending keystrokes (Key press) from .Net to active application

Filed under: .net,programming,robo coding Himanshu @ 5:32 pm

Many of the part of windows works on messages – windows messages. One code can send different kind of messages to another application using Windows API. Keyboard messages and mouse messages are one of them.

.NET is one more layer above OS, e.g. Windows. If someone needs to emulate keyboard strokes to another application from .NET there is a choice of using .NET class library. To emulate keyboard events from .NET it’s easier to use

  • System.Windows.Forms.SendKeys.Send(string) and
  • System.Windows.Forms.SendKeys.SendWait(string)

Recently, I used this to auto log into a application that I’m developing if it’s debug build. Just to get a change from AutoHotKey.

The problem of this is it sends keystrokes to only active application.

March 17, 2008

VS.NET, macro creating string const, and macro creating string resource entry

Filed under: .net,programming,robo coding, Himanshu @ 2:08 pm

Per me, macro is one of the most important feature for any text editor or software IDE. And hence, it is very import for VS.NET user to understand and then use macros available in VS.NET. VS.NET macros are very powerfully tool and they help in lot more different ways.

I have created two macros that are very common in their need. While programming, we need to create string const on regular bases. It becomes inconvenient to go to top of the class while writing a method body for same class and create constant. Macro in library attached with this post becomes handy at that time.

Same use case hold very much true for creating string resources while writing method body. And it becomes really very easy if string resource can be created while writing method body.

For those who thinks like me (or want to 🙂 ), I have attached two macros with this post. Macro works for VS.NET 2005, haven't tested in any other version. But should work fine in VS.NET 2003 or VS.NET 2008

March 11, 2008

Create shortcuts by scripting (AutoIt, AutoHotKey)

Filed under: autoIt,robo coding Himanshu @ 12:01 pm

In windows, one can create shortcuts; Windows shortcuts can point to may resources like URL, an executable file, document files or folder in file system, disk, and network shares. But not all are same in their behavior. For example: If I create shortcut of an executable and put that shortcut in one of the directory which is included in PATH (Environment variable), I can invoke executable by just typing in shortcut name in Start->Run (Windows + R Key). But I could not do same with http URL. I also wanted to parameterize some of them. For example if I type in “jira ata-586”, it should open jira item “ata-586”.

I use AutoIt for quite some time. There are many good things about AutoIt, easy to learn it’s language (almost like VB), can create executable from script, comes with SciTE Script Editor along with plug-in for language and libraries of AutoIt. Because of plug-in SciTE can give nice code complete feature. I have also been using AutoHotKey a bit. One of the nice features of AutoHotKey is you can program it to wait until specific keys are pressed to perform certain operations, recording keyboard keystrokes and mouse gestures. And also supports to create executable from script.

It’s good to create this kind of scripts that will minimize effort to locate specific place that once can access on regular basis. I have created windows shortcuts or script shortcuts for following specific tasks that I perform regularly

  • Open folder of my projects in windows explorer. (“cd ata” or “cd pub”)
  • JIRA home page
  • JIRA space of specific project
  • Specific JIRA issues
  • Confluence Dashboard
  • Specific confluence space.
  • with specific word
  • Google with specific search result.
  • Cisco vpn connection
  • Mapping network share to a drive letter
  • Starting tools that I regularly use, like specific version of visual studio, reflector, vmplayer, nunit…
  • Logging in to application that I’m working/testing
  • Fill-in form that I’m working
  • ….

Big list, I also recommend all to do same for the tasks that you regularly perform, and make you life easier.

March 10, 2008

Automation, Software Engineering, Productivity

Filed under: programming,robo coding, Himanshu @ 12:22 pm

It’s good to use computer as far as it is possible to do. Around the world, many computer engineers work for others to generate code-base that instructs computers to act as it’s user would like it to. Computers gives more accessibility to the information, knowledge, gives more processing power, help to be more managed and allow us to utilize much more clock cycle of our main thread – a human main thread, which can really do the thinking. Ultimately that what the difference is between human and machines in today edge. That is why we have many software built today. Operating systems, financial applications, engineering application and many others, including the RAD (Rapid application development) tools. RAD in compare to the edge where programmers need to punch the cards makes developer very efficient in generating computer instructions. And of-course even computers are also much more efficient now a days.

Anyway, many of us knows most of above that I have written. The point here is use computers, as much as you can to increase productivity. And it applies to software engineers as well. To support that, I’m planning to take several efforts that will include blog-posts, posting some tools, VS.NET macros, snippets and something else that will help.

Although this wouldn’t be the only goal of this blog-post repository (making it explicit as this is first blog-post in this repository), I’m starting with posting first version of first macro that creates resource entry of a selected string in the code. The macro is posted separately to make both more manageable. I’m linking my first macro with this blog post here, but will not do same for other automation posts that I will post later. To find them you should see posts tagged under RoboCoding. Please mind that the macro is in version-1, I will fix and enhance it as time ticks and the need. As well as more of such will come in future.

Powered by WordPress