How can i make the minimum Skype window size smaller?

27
2013-10
  • Qw4z1

    So in Skype you can either choose compact view or standard view. I like the compact because it enables me to have several chat windows open at the same time.

    Problem is the default minimum window size is quite large.

    When I accentually choose standard, switched back to compact and opened one of the active chats I was suddenly able to make the window even smaller (compare the Trenne Arnerholt window with the Calambor window). It seemed like the minimum size had become smaller, which is exactly what I want.

    Does anyone know how to make this smaller size the default minimum size?

    EDIT: using Skype version 5.8 in Windows 7

    Image showing the standard (Calambor) sized window and the wanted (Trenne Arnerholt) window

  • Answers
  • Qw4z1

    It would seem that the problem has to do with Windows 7. When opening Controll Panel -> Appearance and Personalization -> clicking Adjust screen resolution and change the size of "text and other objects" from 125% to 100% all of the skype windows aquired the same (small) size. Strange behaviour...

    Link to Microsofts page on Making the text on your screen larger or smaller


  • Related Question

    How can I close windows by their handle?
  • mark

    Does anyone know of an application which would close a window given its handle? Command line is good.

    Note, that I do not wish to kill the respective application, rather a modal window owned by that application.

    Rationale:

    Sometime, a modal dialog is opened beneath the main window on my laptop. This happened not once for VS and Firefox. Very annoying.

    I can locate the window with Spy++, but have no means of killing it.

    EDIT:

    An application allowing to send messages to an arbitrary window is good as well, I guess I can then send something like WM_CLOSE or whatever.

    EDIT:

    I wish to stress, that I am not interesting in closing a visible window. The whole point is to deal with ugly abnormalities when a modal dialog gets open beneath the owning window, which did happen and not once for me while working with VS and Firefox. So, the desired solution is to close a window by its handle or, if it could specifically locate obscured windows and bring them forth.


  • Related Answers
  • 8088

    Okay, I made a small app that does the trick.

    Screenshot

    You can download it here.

    Usage:

    1. Start the program
    2. Hold your mouse over the window you want to close (don't click on it)
    3. Press delete.

    It sends a wm_close to the window under the mouse cursor.

    Delphi code below...

    unit uCloseWindow;
    
    interface
    
    uses
      Windows, Forms, Messages, SysUtils, Variants, Classes, Controls;
    
    type
      TfrmMain = class(TForm)
        procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
      public
      end;
    
    var
      frmMain: TfrmMain;
    
    implementation
    
    {$R *.dfm}
    
    procedure TfrmMain.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    var
      HandleUnderCursor:HWND;
    begin
      if Key=VK_DELETE then
      begin
        HandleUnderCursor := WindowFromPoint(Mouse.CursorPos);
        SendMessage(HandleUnderCursor,WM_CLOSE,0,0)
      end;
    end;
    
    end.
    
  • Jonas Elfström

    I took this as an excuse to try out the Win32API for Ruby.

    require 'Win32API'
    
    WM_CLOSE = 0x0010
    FindWindow = Win32API.new('user32', 'FindWindow', ["P", "P"], "L")
    SendMessage = Win32API.new('user32', 'SendMessage', ["L", "L", "P", "P"], "L")
    
    def Send_WM_CLOSE(title)
      handle = FindWindow.call(nil, title)
      SendMessage.call(handle, WM_CLOSE, nil, nil) if handle != 0
    end
    
    if ARGV[0].to_i==0
      title=String.new(ARGV[0])
      Send_WM_CLOSE(title)
    else
      SendMessage.call(ARGV[0].to_i, WM_CLOSE, nil, nil)
    end
    

    Using this you can close a fresh notepad with

    > ruby closewindow.rb "Untitled - Notepad"
    

    or if you know the handle

    > ruby closewindow.rb 15794730
    
  • Sinan Ünür

    Here is a Perl script to do that:

    #!/usr/bin/perl
    
    use strict;
    use warnings;
    
    use Win32::GuiTest qw(FindWindowLike SendKeys SetForegroundWindow);
    
    die "Need pattern to match against window titles\n" unless @ARGV;
    my ($windowtitle) = @ARGV;
    
    my ($myhandle) = FindWindowLike(0, qr/winclose\.pl/);
    
    my @windows = FindWindowLike(0, qr/\Q$windowtitle\E/i);
    
    for my $handle ( @windows ) {
        next if $handle == $myhandle;
        SetForegroundWindow($handle);
        SendKeys("%{F4}");
    }
    

    And here is some entertainment using such a script (please do not consider this spam, I am just trying to illustrate a use of Perl's Win32::GuiTest: http://www.youtube.com/watch?v=BAg7K_uwNZs

  • P Daddy

    This would be mind-numbingly simple to cook up for yourself. I see you've rejected Perl. What's your favorite language?

    Here's a simple C example (not tested, going from memory):

    #include <windows.h>
    #include <stdio.h>
    
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){
        HWND hWnd;
    
        if(!sscanf(lpCmdLine, "%i", &hWnd)){
            MessageBox(null, "Invalid argument", "Close Window", MB_OK | MB_ICONERROR);
            return 1;
        }
    
        PostMessage(hWnd, WM_CLOSE, 0, 0);
    }
    

    This is a simple C# example (again, not tested):

    using System;
    using System.Runtime.Interop;
    
    static class Program{
        [DllImport("user32.dll", CharSet=CharSet.Auto)]
        static extern int PostMessage(int hWnd, int msg, int wParam, int lParam);
    
        const int WM_CLOSE = 16;
    
        static void Main(string[] args){
            int hWnd;
            if(args.Length == 1 && int.TryParse(args[0], out hWnd))
                PostMessage(hWnd, WM_CLOSE, 0, 0);
            else MessageBox.Show("Invalid Argument", "CloseWindow", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }
    
  • recursive

    Press Alt + Esc to send the current foreground window to the back. Keep pressing this until you come to the dialog. This will cycle through even windows not in the Alt + Tab list.