Jump to content
Sign in to follow this  
trids

Nirsoft

Recommended Posts

trids

Nirsoft has freeware utilities galore, most with commandline interfaces.

There is too much to list here, and it's really worth a visit. Extremely cool site offering lots of goodies to script with :D

All of them powerful + free + tiny (no installs needed)

Share this post


Link to post
Share on other sites
ezzetabi

Seems great :D

Jon? What about adding a section to the site of programs that may be used well with autoit?

Share this post


Link to post
Share on other sites
ezzetabi

Are you joking? I know where I am! But still the posts goes forgot too quickly! A standard page could keep a good list a lot better.

Edit: EHI! I overtook 400 posts, is it true that I may change my status (I really HATE "Mass spammer"?

Edited by ezzetabi

Share this post


Link to post
Share on other sites
ghettochild

This seems a lot like nonags.com

Share this post


Link to post
Share on other sites
Josbe

Interesting. I don't know if it was written, but I found this code about handling ListView Control, here:

UINT GetLVItemState(HWND hwnd, int i, UINT mask)
{
    return ListView_GetItemState(hwnd, i, mask);
}

void GetLVItemText(HWND hwnd, int iItem, int iSubItem, LPSTR pszText, int cchTextMax)
{
    ListView_GetItemText(hwnd, iItem, iSubItem, pszText, cchTextMax);
}

void SetLVItemText(HWND hwnd, int i, int iSubItem, LPSTR pszText)
{
    ListView_SetItemText(hwnd, i, iSubItem, pszText);
}


BOOL GetLVItem(HWND hListView, UINT mask, int iItem, int iSubItem, LPLVITEM pitem, UINT stateMask)
{
    pitem->mask = mask;
    pitem->stateMask = stateMask;
    pitem->iItem = iItem;
    pitem->iSubItem = iSubItem;
    return ListView_GetItem(hListView, pitem);
}


int GetHeaderItemCount(HWND hwndHD)
{
    return Header_GetItemCount(hwndHD);
}

HWND GetLVHeaderControl(HWND hListView)
{
    return ListView_GetHeader(hListView);
}

int GetLVColumnsCount(HWND hListView)
{
    return (GetHeaderItemCount(GetLVHeaderControl(hListView)));
}


void SwapLVItems(HWND hListView, int iItem1, int iItem2)
{
    //I assume that 4K buffer is really enough for storing the content of a column
    const LOCAL_BUFFER_SIZE = 4096;
    LVITEM lvi1, lvi2;
    UINT uMask = LVIF_TEXT | LVIF_IMAGE | LVIF_INDENT | LVIF_PARAM  | LVIF_STATE;
    char szBuffer1[LOCAL_BUFFER_SIZE + 1], szBuffer2[LOCAL_BUFFER_SIZE + 1];
    lvi1.pszText = szBuffer1;
    lvi2.pszText = szBuffer2;
    lvi1.cchTextMax  = sizeof(szBuffer1);
    lvi2.cchTextMax  = sizeof(szBuffer2);

    BOOL bResult1 = GetLVItem(hListView, uMask, iItem1, 0, &lvi1, (UINT)-1);
    BOOL bResult2 = GetLVItem(hListView, uMask, iItem2, 0, &lvi2, (UINT)-1);

    if (bResult1 && bResult2)
    {
  lvi1.iItem = iItem2;
  lvi2.iItem = iItem1;
  lvi1.mask = uMask;
  lvi2.mask = uMask;
  lvi1.stateMask = (UINT)-1;
  lvi2.stateMask = (UINT)-1;
  //swap the items
  ListView_SetItem(hListView, &lvi1);
  ListView_SetItem(hListView, &lvi2);

  int iColCount = GetLVColumnsCount(hListView);
  //Loop for swapping each column in the items.
  for (int iIndex = 1; iIndex < iColCount; iIndex++)
  {
     szBuffer1[0] = '\0';
     szBuffer2[0] = '\0';
     GetLVItemText(hListView, iItem1, iIndex, szBuffer1, LOCAL_BUFFER_SIZE);
     GetLVItemText(hListView, iItem2, iIndex, szBuffer2, LOCAL_BUFFER_SIZE);
     SetLVItemText(hListView, iItem2, iIndex, szBuffer1);
     SetLVItemText(hListView, iItem1, iIndex, szBuffer2);
  }
    }
}

//Move up the selected items
void MoveLVSelectedItemsUp(HWND hListView)
{
    int iCount = ListView_GetItemCount(hListView);

    for (int iIndex = 1; iIndex < iCount; iIndex++)
  if (GetLVItemState(hListView, iIndex, LVIS_SELECTED) != 0)
     SwapLVItems(hListView, iIndex, iIndex - 1);

}

//Move down the selected items
void MoveLVSelectedItemsDown(HWND hListView)
{
    int iCount = ListView_GetItemCount(hListView);

    for (int iIndex = iCount - 1; iIndex >= 0; iIndex--)
  if (GetLVItemState(hListView, iIndex, LVIS_SELECTED) != 0)
     SwapLVItems(hListView, iIndex, iIndex + 1);

}

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×