Magento 1.7压倒一流

I am trying to override the magento class

class Mage_Adminhtml_Controller_Sales_Invoice extends Mage_Adminhtml_Controller_Action

I have created a director and file local/myModules/Adminhtml/Controller/Sales/Invoice.php and its code is.

include_once("Mage/Adminhtml/controller/Sales/Invoice.php");


class myModules_Adminhtml_Controller_Sales_Invoice extends Mage_Adminhtml_Controller_Sales_Invoice
{
    public function printAction()
   {
    echo "child class";exit;
    if ($invoiceId = $this->getRequest()->getParam('invoice_id')) {
        if ($invoice = Mage::getModel('sales/order_invoice')->load($invoiceId)) {
            $pdf = Mage::getModel('sales/order_pdf_invoice')->getPdf(array($invoice));
            $this->_prepareDownloadResponse('invoice'.Mage::getSingleton('core/date')->date('Y-m-d_H-i-s').
                '.pdf', $pdf->render(), 'application/pdf');
        }
    }
    else {
        $this->_forward('noRoute');
    }
  }
}

And local/myModules/Adminhtml/config.xml is

  <?xml version="1.0"?>
  <config>
<modules>
    <myModules_Adminhtml>
        <version>1.1</version>
    </myModules_Adminhtml>
</modules>


<global>
        <blocks>
            <adminhtml>
                <rewrite>
                  <sales_order_view>myModules_Adminhtml_Block_Sales_Order_View</sales_order_view>
                </rewrite>
            </adminhtml>
        </blocks>
    </global>

<admin>
        <routers>
            <adminhtml> 
                <use>admin</use>
                <args>
                    <modules> 
                        <myModules_Adminhtml before="Mage_Adminhtml">myModules_Adminhtml</myModules_Adminhtml>
                    </modules>
                </args>
            </adminhtml>
        </routers>
    </admin>

In the browser i have the url

/index.php/admin/sales_order_invoice/print/invoice_id/49191/

But it does not display "child class";

Actually I want to override the invoice print functionality. What in XML I am missing?

1) 'myModules' should be MyModules

2) Since you are using <myModules_Adminhtml before="Mage_Adminhtml">

Replace

class Mage_Adminhtml_Controller_Sales_Invoice extends Mage_Adminhtml_Controller_Action

With

include_once Mage::getModuleDir('controllers', 'Mage_Adminhtml') . DS . 'Sales' . DS . 'InvoiceController.php';

class MyModules_Adminhtml_Sales_InvoiceController extends Mage_Adminhtml_Sales_InvoiceController{
    ...
}

Read more @

The Basics Of Creating A Magento Module

How to overload a controller

Magento: Overriding Core Files (Blocks, Models, Resources, Controllers)