This is default featured slide 1 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 2 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 3 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 4 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 5 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

15 new Labs features to try out in Gmail

From the useful to the playful, there's a whole lot more to play with in Gmail Labs, our testing ground for experimental features. Here's a taste of what's new since Labs first launched:
  • Google Calendar and Docs gadgets

  • A forgotten attachment detector

  • Advanced IMAP controls

  • Canned responses to save and send common replies automatically

Turn on these and more from the Labs tab under Settings, and don't forget to let us know what you think. Learn more
[Image]

Gmail on Android

Gmail is now available on the world's first Android-powered phone, the T-Mobile G1. All of the features you love about Gmail on your computer, plus real time push email so you never need to refresh your inbox. Learn more
[Image]

Emoticons – they're not just for chat anymore

Express yourself with emoticons from [Image] to [Image] or even [Image]. Click the [Image] button when composing a message in "Rich formatting" mode, or choose the new emoticons tab in chat, and express yourself to your [Image]'s desire. Learn more
[Image]

Gmail for mobile 2.0

Save multiple mobile drafts, compose and read recent email offline, use new shortcut keys and more. Download Gmail for mobile 2.0 for your BlackBerry or J2ME phone by going to m.google.com/mail in your mobile browser.




[Image] Gmail Labs: A testing ground for experimental new features

Try out features in development and let us know what you think. To get started with Labs, click the Labs tab under Settings. Learn more
[Image] Gmail has a new look on the iPhone browser

Now with auto-complete when composing, automatic refreshing, and faster load times when viewing email. Learn more
[Image] More friends are more fun. Gmail welcomes your AIM® friends.

Now you can talk to your AIM® friends using an integrated chat list right inside Gmail. Learn more



AOL and AIM are trademarks of AOL LLC
[Image] Colored labels

Better organize your email with new colored labels. Just click the color swatch next to each label to assign a color. Learn more
[Image] Group chat

Chat with multiple people without multiple windows. Invite your friends to a group discussion. To start a group chat, click 'Group chat' from the 'Options' menu when chatting. Learn more
[Image] New emoticons

Start sending richer expressions to your friends. Learn more
[Image] Free IMAP

Sync your inbox across devices instantly and automatically. Whether you read or write your email on your phone or on your desktop, changes you make to Gmail will be seen from anywhere you access your inbox. Another way to use Gmail on your iPhone is through the browser. By going to m.gmail.com you get the full Gmail experience including conversation view, search, and more. Learn how to set up IMAP on other devices.



Set up IMAP on your iPhone. Watch the video
  • View as slideshow

    Now you can open PowerPoint attachments as slideshows, without having to download anything. Just click "View as slideshow" next to the .ppt attachment you want to preview. Since you can open .doc and .xls attachments with Google Docs and Spreadsheets too, there's no need to leave your web browser to check out your Gmail attachments. Learn more

  • Increased attachment limit-- 20 MB!

    Now you can start sharing more of those home videos, large presentations and files you just can't seem to get smaller. We have doubled the allowable attachment size to 20 MB to make your Gmail space even more useful. Learn more

  • It's a Gmail party and everyone is invited!

    You can still invite your friends to enjoy Gmail's spam protection, 5GB free storage and other great features, but now you can also just tell them to visit www.gmail.com and sign up without an invitation.

  • Get mail from other accounts

    Now Gmail can check for the mail you receive at your other email accounts. You can retrieve your mail (new and old) from up to five other email accounts and have them all in Gmail. Then you can even create a customized 'From:' address, which lets you send messages from Gmail, but have them look like they were sent from another one of your email accounts. Please note that you can only retrieve mail from accounts that have POP3 access enabled. Learn more

  • Embarrassment-reducing new message notifications

    Ever replied to a message only to find out that someone sent a better, smarter reply right before you? Now, if someone sends a reply while you're in the middle of reading a conversation (or replying to it), you'll get a notification that a new message has arrived. Click "update conversation" to see what you’ve missed.


  • Forward all

    When viewing a conversation, use the new “Forward all” link on the right if you want to forward the entire conversation instead of just one message.

  • Chat even when your friends are offline

    Chatting in Gmail just keeps getting better. Now, if you're chatting with a friend who goes offline, your friend will be able to see whatever you were typing the next time he or she goes online.


  • Get Gmail on your mobile phone

    Download it once, and start accessing Gmail on your phone with just a click or two. To try it for yourself, point your phone to gmail.com/app. Learn more

  • Voicemail

    Your friends can leave you a voicemail using Google Talk. The voice message is sent to your Gmail account as an audio file that you can download or play right from your inbox. Learn more

  • Reply by chat

    When you're about to (or in the middle of a) reply to someone, and you see that person online, you can just send your reply as a chat message. And if you've chosen to save your chat histories, then your chat even gets threaded with that original email conversation. Learn more

  • A picture's worth a thousand words

    With contact pictures in Gmail, you can pick ones for yourself, see which ones your friends have chosen, and set certain pictures to show up for specific people in your Gmail account. Best of all, you can even send picture suggestions to your friends. Learn more

  • Gmail Chat

    Get in touch with your friends instantly, from right inside Gmail! It's the biggest thing to happen to Gmail, since well, Gmail. Learn more

  • Vacation auto-responder

    Set an auto-response so that if you're lying on a beach or taking a train across Siberia, your friends will know you won't be checking your email. Learn more

  • Contact groups

    One of our most-requested features is finally here! Now you can send messages to a group instead of having to pick out the individual addresses every time.Learn more

  • View as HTML

    Now you can view Microsoft Office, OpenOffice or .pdf attachments as web pages by clicking the "View as HTML" link instead of downloading. For when you want to see it faster, you're on a mobile device, or you don't want to install software just to view a document. Learn more

  • Shortcuts on the right

    Now Gmail automatically detects addresses and tracking numbers, and displays useful information such as directions and package tracking alongside your messages.

  • Virus scanning is here!

    For your protection, Gmail now automatically scans for viruses every time you open or send a message with an attachment. We even try our best to remove all the viruses we find. Learn more

  • Export contacts

    Export your Gmail Contacts and save them in a file for back-up or to use in another account or service–great if you're using Gmail's free POP access. Learn more

  • Auto-save

    Saves to ‘Drafts' as you're composing. Never lose a half-written email again.

  • Get to Gmail from any web page

    Download the new Gmail-enabled Google Toolbar. Search your mail or instantly go to your Inbox from any web page with just one click. Learn more

  • Gmail on Google.com

    See your new messages directly from your personalized Google.com homepage.

  • Google Talk

    IM and make free calls through your computer with Google Talk. Your Gmail contacts are even pre-loaded. Learn more

  • Customized 'From:' addresses

    Customize the address on your outgoing messages to display another one of your addresses instead. Learn more

  • An application for Macs

    The Gmail Notifier for Mac OS X even supports plug-in development.

  • Free POP access and automatic forwarding

    Access your mail the way you want to. Download your messages. Read them offline. Use your Blackberry or Outlook or any POP-enabled device. Or forward new messages to an email account you specify. You can even switch to other email services without having to worry about losing access to your messages. Think of it as email portability Learn more

  • Import Contacts

    Move all your contacts from Yahoo! Mail, Outlook, and others to Gmail in just a few clicks. Learn more

  • Signature options

    From the settings page, create a signature that's automatically added to the end of all your outgoing messages. Learn more

Hacking MySpace - Watch any users private videos

A simple modification to URL and all private videos becomes publicly available! Thats a new hack for MySpace users found by GrownUpGeek!

Although MySpace is not a popular video-sharing site (compare to photo uploaded on it, nevertheless this will surely compromise a MySpace users privacy. Following is trick and screenshot from GrownUpGeek’s post

Copy following URL as it is and insert the Myspace friendID at the end in place of the XXXXX

http://vids.myspace.com/index.cfm?fuseaction=vids.showvids&friendid=XXXXXXX

Check out following screenshot for an example URL!

Access Free Airtel GPRS using TeaShark Browser

TeaShark, a mobile browser like Opera Mini, allow you to access Airtel GPRS for FREE. Shockingly it has nothing to do with modifying any Airtel settings or any kind of hack.  I tested it personally throughout the week but I haven’t been charged a single penny.

Here is how I used this…

  • Download TeaShark v. 312. Its free and being JAR file it can be installed on most handsets.

  • Open it from your mobile and select AirTel Live as access point.

  • That’s it! Open any site from TeaShark and you won’t be charged anything.

Note for the first time, when TeaShark starts, it may take more than one minute to initialize. Also this one time initialization may fail many times. 

Here are some famous sites’ mobile version...

The whole thing seems a fortunate coincidence for mobile users and unfortunate one for network operators. This trick cannot be termed illegal as you are not cracking any software or modifying any configuration. For the same reason, I think this will take longer to get rectified.

Please keep in mind that AirTel may charge you all of a sudden in future of this free ride. So please use it at your own risk! ;-)

Remain Always Idle On Google Talk

It basically adds a set of status options as you can see in above image!

As highlighted you can choose Always Idle if you are too busy at work. Many users will think that you are not at desk or something similar and thus won’t bother you. ;-)

Also there is an exactly opposite option - Never Idle. In case you want to look always online no matter even if you forget to shut down your pc at night!

Links: Download Page 

Google added Invisible mode to Gmail Chat And Gtalk

One of the most awaited feature Google Talk lovers has been waiting for is out. Just read on Google’s official Gmail blog that Gmail chat version of Google Talk will now have option to go invisible! Jonas Lindberg quoted,

With this feature, you can appear offline, and still send and receive messages. If you’re using AIM in Gmail, invisible mode also makes you appear signed out on the AIM network.

Many developers will find this interesting as they can chat with other fellow developers without any interruption now. 

Personally this is the feature I was waiting for. Hope to see it in Google Talk application soon

Link: Request a Gmail chat feature to Google

          Official Gmail Post

Windows 7 Seven : Facts and Speculations

Its no secret that Microsoft has already begun work on the next version of Windows, Windows 7 (formerly, Windows Vienna). Little is known about, since Microsoft is keeping mum on it, lest it should repeat the disaster that was Vista (or rather Longhorn's) development cycle. Let's take a look at what we know so far about Windows 7.



1. It will be released in late 2009 - This is perhaps the only solid fact that we know about Windows 7. Other than Windows Vista, all previous Windows versions have been released within at least 3 years of each other, so with Vista's debut in January 2007 we can safely assume Windows 7 so be in stores by late 2009 (or at the latest early 2010).



2. It will be a minor release: According to Microsoft, every other release of Windows will be a major update, therefore, since Windows Vista was a major release, Windows 7 is set to be minor update. However there is still some chance that Windows 7 will be a major release. Firstly it bears a whole new version number, secondly since Windows Vista was largely a disappointing release, Microsoft might be compelled to make the next version much more interesting.



3. There will be both 32-bit and 64-bit versions: Although the official word so far is that Windows 7 will be 64 bit, it should be noted that when Windows XP was released, Windows Longhorn was planned to be a 64-bit version only. Since most of the PCs in existence today are 32-bit, with so signs of a radical shift to 64-bit anytime soon, Windows 7 should be released in both 32-bit versions.



4. There will be a new UI component: When Microsoft first drew up plans for Windows 7 (back when it was codenamed Blackcomb), there were rumors that the current UI will be replaced with an entirely new one, with some reference to a sort of radial-dial. Where are no chances for a complete overhaul of the current interface, MIcrosoft has been working on several new UI ideas, some of which may slip into Windows 7. Indeed, this might be a way to transition us from the current UI to the new one in future WIndows releases.



5. Hypervisor: Microsoft is currently working on a new hypervisor system codenamed "Viridian" with OS integration at the lowest level, and already Windows Vista includes extensions to boost performance when running on top of the Viridian hypervisor. We can expect Windows 7 to have a higher level of interaction with Viridian.



[Image] Now, those are the only tidbits, that we know of yet, or have heard rumors about, but there are some other minor specifics that we can easily guess. We can safely assume that all current bundled applications will be updated, some more than others, below are some speculations.



1. Internet Explorer 9: This is an easy guess, IE7 is out already and IE8 is set to be released in mid-2008, so we can fully expect IE9 to ship with Windows 7. Internet Explorer 7 was a rather rushed release, as Microsoft tried to stem the growth of Mozilla Firefox, and most of its new additions (such as tabs) seem flaky at times. Therefore we can expect IE8 to be a solid release, which, rather than introducing new features, improves the current feature-set, and makes the UI much more responsive. This seems to make Internet Explorer 9 a prime candidate for new and innovative features.



2.Windows Media Player/Windows Media Center: Its a given that new versions of WMP always make it into new Windows releases, and Windows Media Center are also expected to be a regular bundled application with all new versions of Windows. We can expect WMP12 and WMC Fiji with Windows Vista Service Pack 1, and future versions to be included in Windows 7.



3. Virtual Desktops: Mac OSX already has it, and Linux had it for a long time, so it would only make sense that Microsoft will be implementing virtual desktops into Windows 7.



4. System Restore: With OSX Leopard's Time Machine making such an impression with the general public, it can be expected that Windows 7 will improve upon its own backup tool.



5. Paint.NET: So far this has been an independent project that was under the guidance of Microsoft, but Microsoft has always acknowledged that Paint.NET with one day replace the current 'Paint' application in Windows.



There is also a slight possibility that Microsoft will be integrating Windows Live services much more strongly into Windows 7, although it might raise allegations of anti-competitive business strategies. But there might be certain unique Live services that make it into Windows 7, such as Live Drive. Other Microsoft services such as MSN Soapbox might also be a significant part of applications such as Windows Media Center.



It is still too early to tell what shape Windows 7 may take, but we can hope that the recent wave of innovations we have been seeing from Microsoft will carry on into the next two years.



http://en.wikipedia.org/wiki/Windows_7">http://en.wikipedia.org/wiki/Windows_7

Wikipedia's article has other references.

Domain Hacks Tool

Domain Hacks Tool To Find Del.icio.us Like Domain Names



One of the most tedious part while starting a website is finding a right & unique domain name. Everybody loves domain name which ends in .com, but for the same reason finding a short and simple domain name becomes a painful task.



Thanks to del.icio.us, a new trend in domain name started! If you haven’t noticed it, .us is country level domain for United States. Similar creative domain name are owned by wordpress founder ma.tt and IndiBlogger team member anw.in. Here .tt is country level domain for Trinidad and Tobago, similarly .in is for India.

Now trying your favorite keywords against 100’s of country level and other top-level domain name can be tedious task. Also most country-level domain can not be registered with famous domain registrars like GoDaddy!

So to take care of all this problems at one place, visit Domain Hacks tool provided by xona.com.

Xona’s Domain hack tool allows you to search your favorite keyword in all top-level domain names, also tries all valid subdomain combinations, gives link to wiki entry of domain name as well as corresponding domain registrar.

Also a list of suggested domain name available, sorted in three categories - Alphabetized, Word Length & Top-Level Domain.

Links: Domain Hacks by Xona.com



To get such ideas for domain name, head over to domainfinder.geekfg.net and type a word or even a phrase. For instance, if you type "Paris Hilton", it will suggestion parish.il/ton which is for Israel. Thanks Palin.

TRACE YOUR LOST MOBILE EASILY

No worries whether you own a black & white mobile or a colour, now you can easily trace your GSM/CDMA lost mobile. Yes! You’ve to just purcahse a “Mobi Tracer Card” from http://kalyanmobilesecurity.com and you have to register there and you are done with the entire procedure.

Now when your mobile is lost you’ve to send an SMS to Kalyan Mobile Security’s server and they will get back to with the mobile number that is currently in use on your lost handset.

For further details check out: http://kalyanmobilesecurity.com

or send an enquiry mail to them at:

kalyan@kalyanmobilesecurity.com

MAKE FREE OUTGOING CALLS FROM YOUR MOBILE.



Now everyone who ever wanted to make free outgoing calls have a option available on Mobile Gyaan. You just need a GPRS enabled handset and you are done. Yes! This service named Mig33 provides its users to make outgoing calls and it works totally on referral basis, i.e. more the number of referrals you have, more is the free talktime for you. For complete instructions on its usage check out its official website - www.mig33.com or send back a query to Mobile Gyaan team on the comment box.

NICE TWEAK FOR AIRTEL HELLOTUNE USERS..

Now Airtel Hello Tune users need not bother of finding out all the latest hello tune codes. Just dial the hello tune IVRS for almost have the official charge.. To be very simple, those guys who call hello tune IVRS (by dialing 543211) need not waste up a huge call time.. Just dial 09937012562 and you’ll be redirected to the same IVRS as in 543211. And the great part is that you’ll be charged only

1/- Rupees per minute instead of Rs. 3/- (check out your tariff plan).

So, now select the best and updated song from the IVRS even without wasting up huge talktime.

Rediff.com Goes Mobile

Offering Indian mobile phone users a near web like experience of Rediff.com services on their mobile handsets the company has gone live with its mobile client application 'MobileRediff'. This mobile application allows mobile phone users to check latest news updates, access popular Rediff.com services and enjoy real-time access to Rediffmail. These services are integrated into one common application that can be downloaded to mobile phones.



The simple interface of the service allows users to preview email attachments, share files as attachments from mobile phones and also enables users to back up their mobile phone contacts onto the Rediffmail address book. This application also allows users to send and receive Hindi language email and SMS messages. Users can also access and download SMS based content services like ringtones, wallpapers, caller back tones and jokes.





Commenting on the initiative, Uday Sodhi Senior Vice President Interactive services Rediff.com said, "With MobileRediff application we have focused on offering mobile phone users a simple and easy to use interface to access popular Rediff.com's webservices We believe that the ease of use and functionality of the MobileRediff application will appeal to mobile users across India and help make Rediff.com accessible to millions of consumers around the country who do not have access to personal computers."



MobileRediff application is compatible with all leading GPRS enabled mobile handsets and can be accessed at mobile.rediff.com. Users can also download the client directly onto their mobile devices by sending an SMS to 57333. Users can also log on to http://mr.rediff.com for a demo of the application and its functionality.


Malware Authors Jumping on the Obama

No surprise here, the malware authors are leveraging on the social engineering aspect of the US presidential elections.

In less than half a day Google Adwords adverts and custom malware was popping up conning users into a sense of security by using Obama’s name.



Malware purveyors have wasted no time capitalizing on Barack Obama’s landslide victory in the US presidential race. Within 12 hours of his acceptance speech Tuesday night, net users were being treated to scams involving Google AdWords and prodigious volumes of spam.

The spam comes masked as dispatches from legitimate news sources, including the BBC and CNN, and invite readers to click a link to view a video of Obama accepting his country’s vote. Those who take the bait are sent to a spoof page of the news site that claims they need to update their Adobe Flash Player before viewing the speech.
It seems to be a generic trojan/rootkit aiming for banking details, it’s just a new vector for installation.

I guess a lot of people will fall for it though with the election fever hitting all around the World, not just in USA. Everyone is going Obama crazy!



In fact, Adobe_flash9.exe installs the notorious Trojan-PSW:W32/Papras.CL, according to anti-virus provider F-Secure. Earlier Wednesday, just 14 of the 36 major anti-virus programs detected the trojan, according to this analysis from VirusTotal. Once installed, the malware, which cloaks itself in a rootkit, logs passwords for bank sites and other sensitive information and sends them to a server located in Ukraine.

The fraudulent news sites are being hosted on a fast-flux network of infected machines, according to this analysis by the CyberCrime & Doing Time blog. Cloudmark, a company that provides spam filtering service, has already seen more than 10 million of the spam messages, according to the Zero Day blog.
Anyway just let the non-tech savvy amongst the people you know that this is going on and that they are likely to get e-mails or messages about Obama pretending to be from legitimate sources.

Under no circumstance should they follow the link and especially don’t install any flash or other software updates from such sites.


Orkut New feature -schedule events from your Orkut Profile

though I did not find this feature much useful, still I gave it a try. Immediately after hitting the ‘events’ button on the left sidebar of my homepage, I got a form to fill and I did so by entering one of my friend’s birth day and also invited some of my friends too, to attend the event. Guess all the invitees have got an invitation and have an option either to accept, reject or choose the option ‘may be attending’ for the invitation sent to them.



Well many things done and said, but it matter not how much features Orkut introduces, but what matters is how useful are those feature..? You too give it a try and let us know, personally how useful did you find this feature. 

How To Turn Youtube Flv Videos Into mp3

This is simple and most of you might already know it..but i thought i'd post it anyway.



I tought of this my self while i was converting 3gp (mobile phone) videos into .avi



First what you have to do is download a youtube video using a grabber or a grabing site (like tubeg





(save it as .flv (you all know that:P ) )



Then you can convert it to .avi or mpg or w/e you want simply by using this site



(thedoors gave me this long time ago biggrin.gif)



NOw when you browse and put the file it will give you a list of extention that you can cnvert it too..no mp3 is in there..unfotrunately you can only convert it to another video form....so you should voncert it to 3gp biggrin.gif



Then you will browse the 3gp file again and you will see that there are 2 3gp types..one is for video and one is for music..choose the sound type (this way your file will be recongized are pure sound and no video in it) then you can choose convert to :mp3..and all done biggrin.gif



that's it..pretty easy and pretty usefull since here are so many cool live conserts and music videos that i can't find on mp3 tongue.gif

How To Skin Your Gui's In C\c++

Hi all, in this tutorial I will be teaching you the basics of skinning your Win32 GUIs(Graphical-User-Interface’s) using C\C++. I hope you enjoy and learn something from this tutorial.



Questions and answers:

Q. What do you mean by skinning?

If you have ever used Windows media player or Winamp, your notice they use fancy looking buttons and that they don’t use the standard rectangular windows your used to seeing with Windows. These tutorials aim to teach you how to make your standard Windows GUI application look more visually appealing.



Q. What are the drawbacks?

More of an annoyance than a drawback, should the end user of your application be using a non standard Windows theme, then your application wont match there theme, which may be a minus in some case’s.



Q. What will I need to know to keep up with this tutorial?

This tutorial assumes you have a decent knowledge of creating GUI’s using dialogs or the standard win32 API in C\C++. It also assumes you have a working knowledge of C\C++.



Ok lets get started with create non-rectangular windows.



Firstly there are two to ways to create non-rectangular windows, the first involves using regions and the second involves using layered windows, we can do two things using layered windows.



Firstly we can make whole windows transparent (see figure 1.1), secondly we can make a certain pixel colour in our window transparent\invisible (see figure 1.2), we can do this using the following windows API call:



CODE
SetLayeredWindowAttributes(HWND hWnd, COLORREF crKey, BYTE bAlpha, DWORD dwFlags);




Figure 1.1. Example of using transparent windows, note the calculator.





Figure 1.2. Example of making a single pixel colour invisible.





Note: the SetLayeredWindowAttributes(…) function is not compatible with Windows 98 and below.



What about regions?



I chose to keep this tutorial simple, regions are mainly used for backward compatibly should you use windows 98 or below. So I opted not to cover them in this tutorial.



Note: regions are also used to create non-rectangular buttons; I will cover this in part 3 of these tutorials.



Shall we start coding?



Not yet, were nearly there though, “No pain no gain”…

There are a few things you need understand before you can start using the SetLayeredWindowAttributes(…) function.



Firstly we need to load the function from User32.dll so our code will run on Win9x machines (otherwise export will fail and our application may crash).

But before we can load the function we must declare it:

CODE
// defines, we will need these later

#define LWA_COLORKEY            0x00000001

#define LWA_ALPHA               0x00000002

#define g_ColourKey         0xFF00FF // 0,0,255(pink) in RGB hex value



// declare the function

typedef BOOL (WINAPI *lpfnSetLayeredWindowAttributes)(HWND hWnd, COLORREF crKey, BYTE bAlpha, DWORD dwFlags);

lpfnSetLayeredWindowAttributes SetLayeredWindowAttributes;



// NOTE: this code goes above main() …




Now we need to import the function:

CODE
// get a handle to the DLL

HMODULE hUser32 = GetModuleHandle(("USER32.DLL"));



// get pointer to function from DLL  

SetLayeredWindowAttributes = (lpfnSetLayeredWindowAttributes)GetProcAddress(hUser32, "SetLayeredWindowAttributes");



// error importing function   

if(SetLayeredWindowAttributes == NULL)

        MessageBox(0, "Error importing function", "Error!", MB_ICONSTOP | MB_OK);           



// NOTE: this code goes just after main()




So to recap, we have now declared and imported our function, time to start using it.



To use layered windows we need to give our window an extended window style, that being the following:

CODE
WS_EX_LAYERED




To set this style on our window we need to add the following code into our GUI’s WM_INITDIALOG or WM_CREATE message, depending if your using dialogs or not.



The code:

CODE
if(SetLayeredWindowAttributes != NULL)

               {

                SetWindowLong(hwnd, GWL_EXSTYLE, GetWindowLong(hwnd, GWL_EXSTYLE) | WS_EX_LAYERED);

               }




Done that? Good.



Now we need to actually to make our window layered, we can do this using the following code:

CODE
SetLayeredWindowAttributes(hwnd, g_ColourKey, 0, LWA_COLORKEY);

/* NOTE: put this code into the “if(SetLayeredWindowAttributes != NULL)” statement */




After you call this function any pixels with an RGB value of 0,0,255 will become invisible. If your using dialogs your WM_INITDIALOG message should look like this:

CODE
case WM_INITDIALOG:

          {

            if(SetLayeredWindowAttributes != NULL)

            {

              SetWindowLong(hwnd, GWL_EXSTYLE, GetWindowLong(hwnd, GWL_EXSTYLE) | WS_EX_LAYERED);

              SetLayeredWindowAttributes(hwnd, g_ColourKey, 0, LWA_COLORKEY);

            }    

           

            break;

          }.




Ok so we have managed to make any pixel with an RGB value of 0,0,255 invisible, lets make this useful. We will need to find a nice background for our application; I chose to use this (see figure 1.3). Note I did not make it, I just edited it.



Figure 1.3, Example background.







Note the pink, remember our code makes pink pixels transparent, so we know have nice skin and a non-rectangular window… Well we should have, but there is a little bit more work to do.



We have declared our function, we have imported it, we have set our windows style to layered, we have told our window to make any pixels with an RGB value of 0,0,255 invisible… All we need to do now is load and draw the bitmap (our skin), which isn’t to hard. Save your skin as skin.bmp.

Ok so first we need to make the bitmap a resource, in your projects directory create a 2 files, one called Res.rc and the second called Res.h,. Res.rc is our resource file, we will make our bitmap a resource using this file, the 2nd is used to declare our resource so our main application can see it. Lets begin.



Open Res.rc and add the following code:

CODE
IDB_SKIN BITMAP DISCARDABLE "skin.bmp"




Ok our bitmap is now included as a resource in our application, we now need to declare it in Res.h.



Open Res.h and add the following code:

CODE
#define IDB_SKIN 1001




Now in your main project’s file add:

CODE
#include “res.h”


Into the includes section.



You now have your bitmap contained in your file as a resource, lets load it and start using it in our application.



To load a bitmap we need to use the LoadBitmap() function, which looks like this:

CODE
HBITMAP LoadBitmap(

  HINSTANCE hInstance,  // handle to application instance

  LPCTSTR lpBitmapName  // name of bitmap resource

);




and its description:

QUOTE
The LoadBitmap function loads the specified bitmap resource from a module's executable file. This function has been superseded by the LoadImage function.




Ok so once we load our bitmap we need to get a handle to it, a bitmap has a special type of handle, which is known as “HBITMAP”. Lets see some code.

To load our bitmap:

CODE
// OTHER CODE HERE

HBITMAP hSkinMBmp = NULL; // note: this is a global variable

// OTHER CODE HERE



// ENTRY POINT (WinMain())



  hSkinMBmp = LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_SKIN));     

            if(hSkinMBmp == NULL)  

            {                                                         

             MessageBox(0, "Could not load Skin", "Warning", MB_OK |   MB_ICONEXCLAMATION);

            }




Pretty easy isn’t it… All that’s left is to draw our bitmap.



Scroll through your main source file until you reach your dialogs callback function.



We need to add a WM_PAINT message to the dialog, this message is sent every time the dialog redraws itself, so we need to tell the dialog to draw the bitmap, here is my WM_PAINT implementation:

CODE
   case WM_PAINT:

           {

            BITMAP bm;

            PAINTSTRUCT ps;

            HDC hdc = BeginPaint(hwnd, &ps);

            HDC dcSkin = CreateCompatibleDC(hdc);

            GetObject(hSkinMBmp, sizeof(bm), &bm);

            SelectObject(dcSkin, hSkinMBmp);

            BitBlt(hdc, 0,0,500,500, dcSkin, 0, 0, SRCCOPY);

            DeleteDC(dcSkin);

            EndPaint(hwnd, &ps);

            break;

           }




once more thing we need to do is destroy our windows caption bars and make it non-resizable, I wrote this function to do it for us:

CODE
void DestroyCaption(HWND hwnd, int windowWidth, int windowLentgh)

{

HWND hWnd = hwnd;

DWORD dwStyle = GetWindowLong(hWnd, GWL_STYLE);

dwStyle &= ~(WS_CAPTION|WS_SIZEBOX);

SetWindowLong(hWnd, GWL_STYLE, dwStyle);

InvalidateRect(hWnd, NULL, TRUE);

SetWindowPos(hWnd, NULL, 0,0,windowWidth, windowLentgh, SWP_NOMOVE | SWP_NOZORDER); 

}




If you thought about what I just said you may be thinking how would I move my window if there was no caption bar? To do this we need to add one more message to our dialogs callback rouitine, see the code below:

CODE
case WM_LBUTTONDOWN:

           {

            PostMessage(hwnd, WM_NCLBUTTONDOWN, HTCAPTION,NULL);

            break;

           }


This makes our window think we our clicking the caption bar no matter where we click on it, so it means we can drag the window by clicking anywhere on it.



Ok the last thing we need to do is clear up, this is simple, in your dialogs WM_CLOSE message add a call to “DeleteObject(hSkinMBmp);”.



Your WM_CLOSE message should look like this:

CODE
  case WM_CLOSE:

           {    

            DeleteObject(hSkinMBmp);

            EndDialog(hwnd, 0);

            break;

           }




Ok your now finally done, it was a lot of hard work I know, but you did it, you can now create non-rectangular windows and impress your friends with your better looking than there’s GUI biggrin.gif (lol). Just in case you had trouble piecing together all the source in this tutorial, I wrote a complete example in Dev-CPP, you can find the download link below. Well I hope you enjoyed this tutorial, I know I missed a few details but I wanted to keep it simple, I will expand on what you have learnt here in part 2 of this tutorial. Any comments, questions just let me know, KOrUPt smile.gif.





Source code download link:

http://rapidshare.com/files/66820612/Skinn...xample.rar.html

how to turn Vista into a Mac



Got the dock by installing ObjectDock.

http://www.download.com/3001-2341_4-106962...c197a91968dbd29



The MSN theme was a skin for the Messenger Plus package.

http://www.msgpluslive.net/

http://www.msgpluslive.net/skins/view/7-Ap...Live-Messenger/



And the theme I was using is this one (see below for the patcher to make it work)

http://zeusosx.deviantart.com/art/WIN-ZEUS...-VISTA-68544169



I actually used a program called VistaGlazz to patch these DLL's for me.

http://www.codegazer.com/vistaglazz/



I will probably change the dock style later but its fine for me at the moment :]



And thats all you need.

Assembly tutorial, The basics, enough to get started

Here is a basic rundown of how assembly language works, some of the registers, some of the commands, and enough to keep you (hopefully) occupied for a while.



~~~HOW IT WORKS~~~

You push and pop and otherwise move pieces of memory into different places, through various ports, and send them onto different routines. In the long run, it all comes together to process information, get user in/output, and make the most of your clock cycles.



~~~REGISTERS~~~



These are your bread and butter. Last time I checked there were about 30 of these, and I'm going to brush over them here:



EAX,EBX,ECX,EDX - These are all-purpose registers. They are each 32 bits wide (DWORD) and can be broken down further eg EAX is all 32 bits, AX is the 16 least significant bits, and breaks down into AH and AL (H=high and L=low). This can be done with all four of these registers.



Traditionally they have all had different uses, although this has been relaxed in later years.



EAX is the Accumulator, and holds the return value from a function (by convention, not automatically so you need to put your return value here yourself). In 16-bit OS's, AX is used for interrupt subfunctions, but the bottom line here is that when you call a function you can usually count on whatever value was in this register beforehand being destroyed, and naturally you can do whatever you want with it in your programs too. If you want to read/write from memory to a register quickly, you can use LODSB/STOSB/LODSW/STOSW to move from memory pointed to by ESI to an A-series register, or from there to the location of EDI. EAX is also used in the MUL and DIV commands. If you are interested in saving space in your applications, some opcodes have special-case EAX versions, so in short MOV EAX,value is shorter than MOV EBX,value if I remember rightly, somebody please point out if I'm wrong here.



ECX is the Counter, and as a result has a variety of functions related to it with counting in mind. The most common in 16-bit days was the LOOP command, which decremented CX and jumped to the place given if CX!=1. It is also used with JCXZ/JCXNZ and REP. ECX is also a "garbage" register - you cannot count on it being untouched after calling a function, and you can in turn do what you want with it.



EDX is the Data register. It is similar to EAX, but not nearly as widely used. The D-series registers deal with the overflow from the MUL and DIV commands. EDX is also "garbage", so the same rules apply to its use as to ECX and EAX.



EBX is a weird register. On 16-bit processors it was the only general purpose register that could be used to reference memory, although on 32-bit processors and general purpose register can be used - EBX is conventional though. As a result, BX is sometimes passed to 16-bit interrupts as an offset pointer. EBX is NOT a garbage register, so if you intend to use it in your function be sure to save its original state, because even in windows 98 changing its value can crash your program. Because of this I try to avoid this register as much as possible, unless I really need the extra register.





ESI, EDI, ESP, EBP - Addressing registers. All of these can be referred to by their 16-bit names aswell



ESI is the Source register, and points to the data source in LODSB/W and MOVSB/W. It is not a garbage register, so while you should preserve its original state data can be safely left in it when calling other functions.



EDI is the Destination register, points to the data destination in STOSB/W and MOVSB/W. Apart from this it is identical to ESI.



ESP is the Stack pointer. Every time you PUSH a piece of data, ESP is decremented the appropriate amount and your value is stored at the new ESP. In real mode SP is used instead. DO NOT TOUCH THIS REGISTER.



EBP should not be touched unless you know what you're doing. With many high level languages which use stack-based local variables, ESP is decremented a certain amount to create space for local variables and the original ESP is stored in EBP. As EBP may have contained useful data it is pushed onto the stack before any of this happens, so as a result the entire process is reversible. (Side note: because of how these local variables are stored, and the fact that when a function is called the address of the calling opcode is stored in the stack, if a buffer is contained in local memory that is not length-checked, it is possible for code to be injected there, followed by the address of the injectable code as the offset of the return function is overwritten.)





CS, DS, ES, FS, GS, SS - Segment registers.

In 16-bit OS's, there were originally only CS, DS and ES, and the segments were simple - each could be multiplied by 0x10 (16) and added to the offset of any addressed data to find the physical memory address. However with 32-bit cpus and the introduction of protected mode, the segment registers now just refer to segment descriptors, which are structures containing information about the address of the segment, size of the segment, rights within the segment (readable, writeable, executable etc). CS is the code segment, and CS:EIP (or IP in 16-bit) points to the current instruction. DS is the data segment, and is used with (E)SI as ES (Extra segment) is used with (E)DI for LOD/STO/MOV SB commands. It should be noted that DS is the default segment if you don't specify one when moving data around, eg MOV EAX,[EDI] will load EAX with the dword at DS:EDI. ES,FS,GS are all "extra" segments, as in they can be used as placeholders for segments that aren't used particularly often. I may be wrong here (someone point this out if I am) but I'm pretty sure there is no opcode to move a data constant or even a piece from memory directly into a segment register, so you need to POP it off the stack, or MOV from another register. It should be pointed out also that these are not Extended as the other registers are, but are rather 16-bits wide for each register. SS is used in conjuntion with (E)SP for PUSHes and POPs, so should also not be touched AT ALL.





As well as these registers, which are most commonly used (except for segment registers which are never used for usermode 32-bit apps) there are a few more special purpose registers such as cr0 which is used for protected mode related stuff. There are also FPU registers which are manipulated by the arithmetic coprocessor, but there are tutorials on those specifically, including one which comes with the masm32 package. These ones I've mentioned should be the only ones that you really need to use.





~~~COMMANDS~~~

These are known as "opcodes" because unlike commands in other languages, these don't call different procedures but are the actual messages that get sent directly to the CPU. Here's a few everyday ones to get you started:





MOV - moves data from memory to register, register to register, constant to register, register to memory. Cannot be used to move from memory to memory directly. If you want to set a register to 0 it is conventional to use XOR EAX,EAX (eg setting eax to zero) as it is smaller and slightly faster.



Syntax: MOV destination,source



Both arguments must be of the same width, eg MOV AX,EBX will not work.





CALL - calls a subroutine

If you use nasm or masm, you'll find the INVOKE macro used often. What this does is PUSHes all the arguments onto the stack in reverse order, and then CALLs the function requested. Note that this is a macro, and when assembled is converted into the PUSHes and CALL that make up the instruction.



Syntax: CALL label





RET - return from subroutine



Syntax: RET





PUSH - pushes a value, point in memory, or register onto the stack. This is often used to preserve registers that aren't allowed to be destroyed, and also for passing arguments onto a function.



Syntax: PUSH value/register/memory reference





POP - pops a value off the stack into a point in memory or register. The opposite of PUSH, and usually symmetrical to PUSH, as often if a register is to be preserved with PUSH EBX you can find POP EBX later in the function.



Syntax: POP value/register/memory reference





CMP - compares two registers, or a register and a value (fixme - may work with memory refs?)

This is what makes programs dynamic - the ability to do If and Else statements. This also works with loops if you're using unoptimised code. When it returns it sets various flags, which can be added onto variables or used with the conditional jump commands. If you want to compare a register to 0 it is also conventional to use OR register,register which I think may be slightly quicker.



Syntax: CMP value1,value2





JMP - Jump to a label

In 32-bit programming it doesn't matter whether a jump is far or near, so JMP is used for all purposes, however in 16-bit programming the difference between a near jump and a far jump is quite a lot because a near jump can only reference 16 bits either side of your opcode, so jumping to another segment requires a FAR JUMP which includes the segment of the new routine.



Syntax: JMP label





JE, JNE, JG, JL, JGE, JLE, JZ, JNZ - Conditional jumps

JZ and JE are the same, as are JNZ and JNE, but have different meanings, as JZ will jump if the zero flag is set, but JE will jump if the values are equal (and so the zero flag gets set meaning they are essentially the same). Which one you use is completely up to you, as they assemble to the same machine code. Also to be noted are JG, JL, JGE and JLE which are jump if greater, jump if less than, jump if greater than/equal to, and jump if less than/equal to. Note that these compare the first value of the CMP command to the second, so CMP v1,v2 JG label is the same as if(v1>v2) goto label; Also note that these have synonyms which are JA, JB, JAE and JBE which in this case have DIFFERENT assembled values as they compare different flags to produce what as far as I can tell are the same result. To make this more confusing, there are also opposites, eg JNB (jump if not below), JNG, JNGE which assemble to the same machine code commands as their counterparts, eg JNB is the same as JAE etc. There are also other commands that test individual flags which can be used for different purposes (eg testing OF the overflow flag to see if an addition has overflowed off the end) which are all fairly self-explanitory. These can all be near or short jumps, and should be assembled differently depending on where the labels are in your program.



Syntax: same as for JMP







~~~ASSEMBLERS~~~

These come in different shapes and sizes, fulfil different purposes, and most of all use slightly different syntax (with the exception of mingw/dev-cpp inline asm which is just weird). Nasm is a free open source assembler with simplified structure support and very well defined means for addressing, masm has better structure support, more macros, and is helpful when making the step between C and asm. Tasm is a lot older than both of these, and as far as I know is used more for console apps. Fasm is one I have heard much about, but never really played with much.



The bottom line here is that it doesn't matter what assembler you use, as long as you like it, and you know the differences between it and the other major assemblers for when you get code samples.





~~~CONCLUSION~~~



I'm hoping this is enough for now, post here if theres anything ive missed or badly fucked up and ill see to it that it gets fixed





All for now



NoFriLLz